文字を 1 つずつ読み取り、累積的に int に変換しようとしています。ユーザーが数字以外の文字を入力すると、プロセス全体が最初からやり直されます。このコードgetchar()
を実行すると、キーを押すたびに実行するのではなく、Enter キーを押した後にのみ以下のコードが実行されます。簡単に言えば、一度に 1 文字ではなく、Enter で終わる文字列を入力として受け取り、入力文字列から一度に 1 文字を読み取り、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);
}
}