2014-04-11 66 views
0

对不起,我之前做过类似的事情,我确信我已经完成了这个复杂的工作,但是有人能帮我理解最新的错误吗?我以前只知道Java,但我对C很熟悉。无法在文件中读取 - C

我已经尝试了3种不同的方式从网上搜索,没有注释掉的是我更喜欢使用的。它在data.txt中打印出适量的数字,但它只打印出数字1.我认为在这段时间内的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 的#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

您应该使用不同的变量来检查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);