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

  • 本文关键字:程序 一个 无限循环 简单
  • 更新时间 :
  • 英文 :


我试图做一个简单的程序来改变一个数字的基数(I,e,我给基数2和5,数字101,我应该得到10),当做函数来读取基数时,我得到以下内容:如果我正确输入它工作的数据,如果我不(例如,我输入"231")程序进入无限循环,为什么会发生这种情况?

#include <stdio.h>
int main(void)
{
    int base1,base2;
    readBases(&base1,&base2);
    printf("%d%dn",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);
  }

相关内容

最新更新