对不起,我之前做过类似的事情,我确定我过于复杂,但有人可以帮我理解什么是错的吗?我以前只知道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;
}
答案 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);