繁体   English   中英

为什么该程序给我一个无限循环? 简单的程序

[英]Why is this program giving me an infinite loop? Simple program

我试图制作一个简单的程序来更改数字的底数(即我给2和5的底数,数字101和我应该得​​到10的底数),在执行读取底数的功能时,我得到了以下内容:如果我正确输入了它可以工作的数据,但是如果我没有输入(例如,我输入“ 231”),程序将进入无限循环,为什么会发生这种情况?

#include <stdio.h>

int main(void)
{
    int base1,base2;
    readBases(&base1,&base2);
    printf("%d%d\n",base1,base2);
    return 0;
}

void readBases(int *baseOrig, int * baseDest)
{
    int aux1,aux2,flag;
    do
    {
        printf("Type in the bases, in the format <a>b:");
        flag=scanf("<%d>%d",&aux1,&aux2);
        if(aux1<2||aux1>10||aux2<2||aux2>10)
        {
            flag=0;
            printf("Invalid data.\n");
        }
    }while(flag!=2);
    *baseOrig=aux1;
    *baseDest=aux2;
}
 flag=scanf("<%d>%d",&aux1,&aux2);

读取尽可能多的输入流,并返回转换后的字段数。

如果无法读取任何内容,则它将无法进行输入-停止。 您需要某种安全地读取数据的方式。

线路端接效果很好。

  while( fgets( buffer, sizeof( buffer), stdin ) != NULL ){
       flag = sscanf( buffer, "<%d>%d",&aux1,&aux2);

  }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM