无法读入文件 - C

时间:2014-04-11 00:14:44

标签: c file-io

对不起,我之前做过类似的事情,我确定我过于复杂,但有人可以帮我理解什么是错的吗?我以前只知道java,但我熟悉了C。

我尝试了3种不同的在线搜索方式,未注释的方式是我喜欢使用的方式。它在data.txt中打印出正确数量的数字,但它只打印出数字1.我认为同时在c里面的c = scanf会给我一个不同的结果。

由于我没有做任何数学运算,我也尝试只读数字作为字符,但我得到了一堆时髦的符号。

输入:

./ a.out< data.txt中

data.txt内容: 0 2 2 0 6 1 0 7 4 1 7 5 0 8 2 0 8 9 1 15 13

c文件内容:     #包括     #include" queue.h"

int main(void)
{
    /*
    char c = scanf("%c", &c);
    while (c!= EOF)
    {
        printf("%c", c);
        c = scanf("%c", &c);
    }//while
    */



    int c = scanf("%d", &c);
    while (c!= EOF)
    {
        printf("%d", c);
        c = scanf("%d", &c);
    }//while
    printf("\n");



    /*
        char c;
    //char **argv
    FILE *infile;
    infile=fopen(argv,"r");
    while (!feof(infile))
    {
        fscanf(infile, "%c", &c);
        printf("%c", c);
    } // while
    fclose(infile);
    */
return 0;

}

1 个答案:

答案 0 :(得分:1)

您应该使用不同的变量来检查scanf的结果,而不是存储读取的值。正如你现在所做的那样,你立即用scanf结果覆盖读取值。

此外,最好检查成功而不是检查EOF,就像输入了文本一样,你将进入无限循环。

int x = scanf("%d", &c);
while ( x == 1 )
{
    printf("%d", c);
    x = scanf("%d", &c);
}

显然这可以浓缩:

while ( 1 == scanf("%d", &c) )
    printf("%d", c);