如何将字符拼凑成C

时间:2016-11-24 13:36:21

标签: c encryption character

这是我的代码。我想写一个文本文件所有字符(= 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; 我无法找到解决方法。谢谢。

1 个答案:

答案 0 :(得分:1)

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

  2. 这不是可移植的C.您不能假设az出现在一个区块中。 (同上AZ。)您也不能假设65是A的值。

  3. 对于(2)使用int islower(int c)int isupper(int c)代替。这些功能都是便携式的。