我正在尝试一次读取一个字符并以累积方式将它们转换为 int 。如果用户输入数字以外的字符,我将重新开始整个过程。当我运行这段代码时,下面的代码getchar()
只有在我按下回车键后才会执行,而不是每次按键都执行。简而言之,它不是一次取一个字符,而是取一个以 enter 结尾的字符串作为输入,然后从输入字符串中一次读取一个字符并执行 while 循环。我很确定它与\n
printf 语句中的有关。我的c代码:
char* input=malloc(0);
char c;
int count=0;
int a;
int b;
errno=0;
printf("\nEnter two numbers a and b\n");
while(1){
count++;
printf(":Count:%d",count);
c=getchar();
printf("\n::%c::\n",c);
if(c=='\n')
break;
input=realloc(input,count);
input[count-1]=c;
errno=0;
a=strtol(input,NULL,10);
printf("\nNUMber::%d\n",a);
if (errno == ERANGE && (a == LONG_MAX || a == LONG_MIN)){
printf("\nLets start over again and please try entering numbers only\n");
count=0;
input=realloc(input,0);
}
}