题
我是新的C ++编程,我来自一个Java的背景。我想知道为什么在下面的代码,在while循环我有型我输入10次,然后会显示所有十个输入。我想一旦输入一些东西,并有后立即显示。然后继续键入我的其它输入。
#include <stdio.h>
#include <stdlib.h>
#include "Helper.h"
main(){
print(PROGRAM_INFO); //prints program name and author
print(PROMPT);
char input [100]; //array to hold input from user
int isActive = 1; //1 continue shell, 0 terminate shell
int count = 0;
while (isActive == 1 && count < 10){
print(PROMPT);
++count;
scanf("%s", input);
print(input);
}
}
解决方案
尝试每个fflush(stdout)
后冲洗print(input)
其他提示
尝试把一个“\ n”字符的打印。流只是不被刷新。
在最终打印语句之后,你也许可以调用fflush(标准输出);冲洗标准输出到屏幕上。
您需要刷新标准输出。 fflush(STDOUT)
应该这样做,打印后加入。
默认输入/输出进行缓冲,即输入和输出的字节被存储在字节数组显示给流之前。结果 BUFSIZ在系统通常是1024.Although的printf的倍数行缓冲,缓冲 当遇到换行符时,会自动刷新。结果 fflush(stdout中)使缓冲的数据刷新到输出流,其在这种情况下是标准输出。 可以使用控制缓冲区处理 setvbuf用来()函数
您print
是复制/粘贴错误,对吧?应当printf
。
和你真的不应该直接printf中的格式打印用户的字符串。结果试想用户类型"%d%f%s\a%c"
...
做的最好的事情是
printf("%s\n", input);
使用的格式“\ n”,你不需要fflush(stdout);
因为标准输出线默认缓冲和“\ n”做一个对自己。
此外,如果用户键入"%d%f%s\a%c"
这就是你打印的内容。
做的最好的事情是
puts(input);
放把标题为“\ n”到输出,并且没有问题格式字符串。
不隶属于 StackOverflow