linux 中scan总是出错f
请问一下,linux中
while(1)
{
int d ;
int f;
scanf("%d",&d);
scanf("%d",&f);
}
为什么当循环第二次的时候,程序会进入死循环..就是不输入,程序也会将第一次的输入放入d f;
我使用过fflush(stdin)好像根本没用.
那如果要读入int 还有什么别的方法吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
你把你的代码贴的再全一些好吗?
我在这边没看到什么问题.
抱歉原来的程序,我是开辟一个子进程,然后再进行输入.发现在子进程中的scanf总是无效.
想用fgets但是好像不能读int
#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>
int main (void)
{
pid_t pid;
if( (pid = fork())<0 )
printf("error");
else if(pid ==0)
{
while(1)
{
int pir = -1; //piror
char* task;
fflush(stdin);
printf("\nPlease give a piror to the job! \n0 will be the highest! 3 will be lowest!\n");
printf("Now enter a number :");
// int c;
scanf("%d",&pir);
// scanf("%d",c) ;
// printf("%d\n",c) ;
fflush(stdin);
task = (char*)malloc(sizeof(char)*10);
fflush(stdin);
printf("Please give a job !\n");
printf("Now enter :");
} // scanf("%s",task);
// scanf("%c",c) ;
/* if( pir == 0|| pir == 1|| pir ==2 || pir == 3 )
{
if( head[pir] ==NULL)
{
printf("CREATE!\n");
head[pir] = create_list(-1,1,pir,task) ;
}
else
{ printf("INSERT!\n");
head[pir] =insert_node(-1,1,pir,task,head[pir]);
}
flag = 0; //if the putin is ringht
}
else
{
printf("Please give a right prior ! It id between 0 and 3 ! \n");
}
} } */
} }
你可以先用fgets读入字符串.
然后用sscanf转换成int型.
比如读入 buf;
int n;
sscanf(buf,"%d",&n);这样你就得到n了.
好的!谢谢!