在此代码中,scanf
只能使用一次。我究竟做错了什么?scanf in while循环
#include <stdio.h>
#include <unistd.h>
int main()
{
int i = 1;
if (! fork())
{
while(i)
{
printf("Enter i");
scanf("%d", &i);
fflush(stdin);
fflush(stdout);
}
}
else
{
printf("Parent\n");
}
return(0);
}
scanf()是邪恶的。不要使用它。 – 2010-02-20 19:40:55
为什么你在这里使用'fork()'?它不会直接影响逻辑,但是......您的子进程正在读取标准输入,而您的父进程正在打印并退出(无需等待子进程)。这个孩子是孤儿。你确定它不只是坐在后台,与shell讨论谁将阅读下一行数据(并丢失)? – 2010-02-20 21:44:09
减去'fork()',代码显示有趣的行为。出现提示(在输入数据之前没有空格)。它循环;重复几次。读取值未显示。键入EOF并且程序进入无限循环。不好。总是检查从scanf()返回! – 2010-02-20 21:46:54