2016-11-24 103 views
0

這是我的代碼。我想寫一個文本文件的所有字符(= p)。但它只寫一個字符。如何將字符放在一起作爲字符串C

FILE *enc_vigenere = fopen(".../enc_vig.txt", "w"); 

unsigned int i, j, p = 0;   

for(i=0,j=0;i<strlen(text);i++, j++){ 
    if(j>=strlen(key)) { 
     j = 0; 
    } 
    if(text[i] >= 'a' && text[i] <= 'z') { 

     p = 97+(((toupper(text[i])-65)+(toupper(key[j])-65))%26); 

    } 

    else if(text[i] >= 'A' && text[i] <= 'Z') { 

     p = 65+(((toupper(text[i])-65)+(toupper(key[j])-97))%26); 
    } 

    printf("%c", p); 
    fprintf(enc_vigenere, "%c", p); 
    fclose(enc_vigenere); 
} 

} 

輸出是在這裏:

Text you want to Encrypt : bahar 
math 
naahd 

結果爲真「naahd」但是當我打開文本文件,我看到的只是一個字符。 「n」我無法找到如何解決它。謝謝。

+0

你是ROCK!謝謝。 <3 – misshyde

+0

你確定你發佈的代碼是你編譯的代碼嗎? '「.../enc_vig.txt」是腥的(3個點而不是2個點)。 –

+0

它的作品,我只是這樣寫在這裏,因爲太久了:)當然不是... 3個點:) – misshyde

回答

1
  1. fclose(enc_vigenere);需要在for循環之外。

  2. 這不是便攜式C.您不能假設az出現在一個塊中。 (同上AZ。)您也不能假定65是A的值。

對於(2)代替使用int islower(int c)int isupper(int c)。這些功能是便攜式的。

+0

謝謝,我搬了'fclose(enc_vigenere);'出於for循環,然後工作。嗯,好的,謝謝。 – misshyde

+0

很高興。不要忘記第二點。 –

+0

好的,我會的。 <3再次感謝。 – misshyde

相關問題