linux 中scan总是出错f

发布于 2022-09-30 07:59:05 字数 281 浏览 17 评论 0

请问一下,linux中

while(1)
{

int d ;
int f;
scanf("%d",&d);
scanf("%d",&f);
}
为什么当循环第二次的时候,程序会进入死循环..就是不输入,程序也会将第一次的输入放入d f;

我使用过fflush(stdin)好像根本没用.

那如果要读入int 还有什么别的方法吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

陌伤ぢ 2022-10-07 07:59:05

你把你的代码贴的再全一些好吗?
我在这边没看到什么问题.

岁月打碎记忆 2022-10-07 07:59:05

抱歉原来的程序,我是开辟一个子进程,然后再进行输入.发现在子进程中的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");
                }
}  }                  */
}    }

没有伤那来痛 2022-10-07 07:59:05

你可以先用fgets读入字符串.
然后用sscanf转换成int型.
比如读入 buf;
int n;
sscanf(buf,"%d",&n);这样你就得到n了.

烟花肆意 2022-10-07 07:59:05

好的!谢谢!

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文