文字を読み込んでテーブルに格納するためにgetchar()を使用します。また、整数を取得するためにscanfも使用します。scanfは、以前に実行されたgetchar()の入力を取得します。
scanf()の問題は、ユーザーの入力を待つのではなく、前の行に指定された最後の文字をバッファからgetchar()で読み取ることです。
私はsscanf、fflush(stdin)を試しました。私はまだ同じ動作を得ています。
#include <stdio.h>
#include <stdlib.h>
main()
{
int i, choice, tmp_day, tmp_month;
char name[5];
printf("insert choice(1-3):\n");
scanf("%d",&choice);
printf("name: ");
for (i=0;i<5;i++) name[i]=getchar();
name[5] = '\0' ;
printf("day (1-31): ");
scanf("%d",&tmp_day);
printf("month (1-12): ");
scanf("%d",&tmp_month);
printf("\n%d %d", tmp_day, tmp_month);
}
ありがとうございます。およそfflush(stdin)
必ずしもポータブルない
fflush(stdin);
char name [5]; - > char name [6]; index 0..5 = size is 6 – BLUEPIXY