从文本文件中读取时,循环不会结束

时间:2014-09-14 08:46:28

标签: c string encryption file-io

我正在输入一个非常简单的C程序,它从文件中读取字符并显示它"加密"用(Caesar cipher)之后的3个字符替换每个字符。

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char *argv[])
{
        FILE *inFile;
        int ch;
        int ch1;

        if (argc!= 2){
                printf("Usage: Code <inputfile> [> Outfile]\n");
                return(-1);
        }

        inFile = fopen(argv[1], "r");
        while ((ch1=toupper(fgetc(inFile)))!='\0') {
                ch=ch1;
                if (ch >=33 && ch <=255)  //exclude special chars
                        ch += 3;
                putchar(ch);
        }
        printf("END\n");
        fclose(inFile);
        return 0;
}

我使用带有gcc encode.c的gcc编译它,然后运行./a textfile。接下来是&#34;编码&#34;然后,在2秒后,终端充满垃圾,特别是ascii square。我用Ctrl-C来逃避它。显然while循环永远不会结束,因为我从未看到END字符串。我想知道是否&#39; \ 0&#39;是问题,我用NULL替换它,但不仅问题仍然存在,但我在编译期间也收到警告。

0 个答案:

没有答案