[英]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.