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