C语言中的字符计数
我刚开始编程,正在使用代码块编译器。使用此代码C语言中的字符计数,c,C,我刚开始编程,正在使用代码块编译器。使用此代码 long x = 0; while(getchar() != EOF){ ++x; } printf("%ld\n", x); 我试图计算输入的字符数,但每次我运行程序时,它都不会打印任何内容 然而,这个版本 long x = 0; while(getchar() != EOF){ ++x; printf("%ld\n", x); } 成功打印字符数,但另一方面,它统计每个字符(显示的是1、2、3、4,而不是4) 谢谢你
long x = 0;
while(getchar() != EOF){
++x;
}
printf("%ld\n", x);
我试图计算输入的字符数,但每次我运行程序时,它都不会打印任何内容
然而,这个版本
long x = 0;
while(getchar() != EOF){
++x;
printf("%ld\n", x);
}
成功打印字符数,但另一方面,它统计每个字符(显示的是1、2、3、4,而不是4)
谢谢你的回答 您如何运行程序,以及如何提供输入?我的假设如下:
如果这些是真的,则需要键入EOF字符(Windows上为ctrl+z,Mac上为ctrl+d,在其他unix上可能相同)。或者,您可以使用
语法为程序提供一个文件。例如:/a.out
您如何运行程序,以及如何提供输入?我的假设如下:
如果这些是真的,则需要键入EOF字符(Windows上为ctrl+z,Mac上为ctrl+d,在其他unix上可能相同)。或者,您可以使用
语法为程序提供一个文件。例如:/a.out
实际上,您在while循环中使用的是EOF,意思是“文件结束”,它基本上是在您想要读取文本文件时使用的。
现在我向你们解释两个代码中发生了什么,然后我将告诉你们如何解决它
第一个代码:
long x = 0;
while(getchar() != EOF){
++x;
}
printf("%ld\n", x);
在这里,只要不发生EOF,您就可以从键盘获取输入,一旦发生EOF,循环将中断并执行printf(),但在这种情况下,不会发生EOF,因此不会打印任何内容
第二个代码:
long x = 0;
while(getchar() != EOF){
++x;
printf("%ld\n", x);
}
只要EOF没有发生,循环就会继续,并将继续打印x的值,因为printf()存在于while循环中,因此printf()将在循环迭代时执行多次
解决方案:
将EOF替换为其他字符,如这样的空格
long x = 0;
while(getchar() != ' '){
++x;
}
printf("%ld\n", x);
实际上,您在while循环中使用的是EOF,意思是“文件结束”,它基本上是在您想要读取文本文件时使用的。 现在我向你们解释两个代码中发生了什么,然后我将告诉你们如何解决它 第一个代码:
long x = 0;
while(getchar() != EOF){
++x;
}
printf("%ld\n", x);
在这里,只要不发生EOF,您就可以从键盘获取输入,一旦发生EOF,循环将中断并执行printf(),但在这种情况下,不会发生EOF,因此不会打印任何内容
第二个代码:
long x = 0;
while(getchar() != EOF){
++x;
printf("%ld\n", x);
}
只要EOF没有发生,循环就会继续,并将继续打印x的值,因为printf()存在于while循环中,因此printf()将在循环迭代时执行多次
解决方案:
将EOF替换为其他字符,如这样的空格
long x = 0;
while(getchar() != ' '){
++x;
}
printf("%ld\n", x);
运行程序时,控制台是否显示为一个单独的窗口,然后在发送EOF时关闭?如何发送
EOF
?将EOF
替换为'\n'
。当您输入一些字符并按enter键时,它将打印正确的数字。EOF是文件的结尾。在行尾更改它,即“\n”。(忽略-我是盲人…)当您运行程序时,控制台是否显示为一个单独的窗口,然后在您发送EOF时关闭?如何发送EOF
?将EOF
替换为。\n
。当您输入一些字符并按enter键时,它将打印正确的数字。EOF是文件的结尾。在行尾更改它,即“\n”。(忽略-我是盲人..)值得注意的是,在Windows上,必须在行首键入Ctrl-Z,然后按Enter/Return,或者反复按Ctrl-Z(2-3次?)放弃行上的所有输入,改为发送EOF。在其他系统上,如果没有输入任何其他内容,只需按Ctrl-D键即可结束程序;不需要按回车键。否则,您必须反复按Ctrl-D键(可能2-3次)才能发送EOF。值得注意的是,在Windows上,您必须在行首键入Ctrl-Z,然后按Enter/Return,或者反复按Ctrl-Z键(2-3次?)放弃行中的所有输入,改为发送EOF。在其他系统上,如果没有输入任何其他内容,只需按Ctrl-D键即可结束程序;不需要按回车键。否则,您必须反复按Ctrl-D键(可能2-3次)才能发送EOF。哦,我明白了,我想不出这还不是文件的结尾,谢谢。我明白了,我想不出这还不是文件的结尾,谢谢