为什么要运行此代码并打印整个字符串?
#include <stdio.h>
void main()
{
int a;
while(a!='q')
{
scanf("%c",&a);
printf("%c",a);
}
}
输入q以外的字符串,最后按回车键。只有现在你的字符串才会在屏幕上打印出来。为什么呢?
答案 0 :(得分:3)
这里的问题不在于scanf,而在于你的printf调用。
Printf缓冲输出直到达到新行,因此程序在printf("\n");
之前不会显示任何内容。 (当有人按下回车时也会发生这种情况,您将其返回到屏幕,导致缓冲区刷新。)
如果您不想使用printf("\n")
分解输出,那么您可以使用fflush(stdout)
手动刷新缓冲区而不打印任何内容,如下所示:
int a;
while(a!='q')
{
scanf("%c",&a);
printf("%c",a);
fflush(stdout);
}
答案 1 :(得分:0)
对于初学者来说,该代码无法编译 - print不是C中的函数,printf是您正在寻找的一个。
至于我认为你在问什么,我不知道为什么你要打印你阅读的每个字符,直到你读q;这似乎有点无意义。
答案 2 :(得分:0)
首先,您需要将a定义为char类型:
char a;
当你点击回车时,while循环将运行你输入的多少个字符。试试看看发生了什么:
char a = 0;
int i = 0;
while(a!='q')
{
scanf("%c",&a);
printf("%d:%c",i++,a);
}