|
scanf("%s %d %d\n") の、"\n" は入力した改行文字とはマッチしません。
というのは2つめの%dでバッファに"\n"を見つけた時点でscanf()を終了し
てしまうからです。
2度目の入力で1度目にバッファに残っている"\n"を1度目の"\n"と
マッチし、それから二度目の入力が始まります。3度目は何か適当な
文字列さえ入力すれば、バッファに残った"\n"と2度目の"\n"がマッチし
て入力を終えます。
これを防ぐには、scanf()の書式文字列の中に"\n"を入れない事です。
入れなければ"\n"はホワイトスペース文字ですので勝手にスキップされ
ます。
#include<stdio.h>
int main(void)
{
struct hyou {
char name[20];
int age;
int salary;
};
static struct hyou a[20];
int n;
printf("入力してください\n");
for (n = 0; n < 2; n++)
scanf("%s %d %d",a[n].name,&a[n].age,&a[n].salary);
for (n = 0; n < 2; n++)
printf("%s %d %d\n",a[n].name,a[n].age,a[n].salary);
return 0;
}
|