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

时间:2015-10-06 18:28:30

标签: c

我试图制作一个简单的程序来改变一个数字的基数(我,我给基数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;
}

1 个答案:

答案 0 :(得分:1)

 flag=scanf("<%d>%d",&aux1,&aux2);

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

如果它无法读取任何内容,那么它将无法进行输入 - 停止。你需要一些方法来安全地阅读数据。

线路终端运行良好。

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

  }