这是我的代码。我想写一个文本文件所有字符(= p)。但它只写了一个字符。
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
结果是真的&#34; naahd&#34;但是当我打开文本文件时,我只看到一个字符。 &#34; n&#34; 我无法找到解决方法。谢谢。
答案 0 :(得分:1)
fclose(enc_vigenere);
需要在for
循环之外。
这不是可移植的C.您不能假设a
到z
出现在一个区块中。 (同上A
到Z
。)您也不能假设65是A
的值。
对于(2)使用int islower(int c)
和int isupper(int c)
代替。这些功能都是便携式的。