我试图制作一个简单的程序来改变一个数字的基数(我,我给基数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;
}
答案 0 :(得分:1)
flag=scanf("<%d>%d",&aux1,&aux2);
尽可能多地读取输入流,并返回转换字段的数量。
如果它无法读取任何内容,那么它将无法进行输入 - 停止。你需要一些方法来安全地阅读数据。
线路终端运行良好。
while( fgets( buffer, sizeof( buffer), stdin ) != NULL ){
flag = sscanf( buffer, "<%d>%d",&aux1,&aux2);
}