我是新的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”到输出,并且没有问题格式字符串。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top