在C中循环帮助

时间:2009-09-20 03:47:20

标签: c printing while-loop scanf

我是C编程的新手,我来自Java背景。我想知道为什么在下面的代码中,在while循环中我必须输入十次输入,然后显示所有十个输入。我想尝试输入一次并立即显示。然后继续输入我的其他输入。

#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);


}


}

6 个答案:

答案 0 :(得分:5)

在每个fflush(stdout)

之后尝试刷新print(input)

答案 1 :(得分:1)

尝试在打印件中加上'\ n'字符。流没有被刷新。

答案 2 :(得分:1)

在你的最终印刷声明之后,你可以调用fflush(stdout);将标准清单刷新到屏幕上。

答案 3 :(得分:1)

您需要刷新STDOUT。 fflush(STDOUT)应该这样做,在打印后添加。

答案 4 :(得分:1)

默认输入/输出是缓冲的,即输入和输出字节在显示到流之前存储在字节数组中。
系统中的BUFSIZ通常是1024的倍数。虽然printf是行缓冲的缓冲区 遇到换行符时会自动刷新 fflush(stdout)导致缓冲的数据被刷新为输出流,在本例中为stdout。 您可以使用setvbuf()函数

控制缓冲区处理

答案 5 :(得分:0)

您的print是复制/粘贴错误,对吗?它应该是printf

你真的不应该以printf的格式直接打印用户字符串。
想象一下用户输入"%d%f%s\a%c" ...

最好的办法是

printf("%s\n", input);

使用格式中的'\ n',您不需要fflush(stdout);,因为默认情况下stdout是行缓冲的,'\ n'自己做一个。

此外,如果用户键入"%d%f%s\a%c",那就是您打印的内容。


最好的办法是

puts(input);

puts将'\ n'添加到输出中,格式字符串没有问题。