【发布时间】:2019-01-10 11:19:47
【问题描述】:
我正在尝试使用scanf在C语言的控制台上扫描3个字符串,但每次扫描第二个字符串时,它也会添加到第一个字符串的末尾。
我已经尝试更改 scanf 格式参数(%8s, %[^\n]s, %8[^\n]s),但没有任何效果。貌似%8s忽略了第二个scanf,直接跳转到第三个。
char matrikelnumber[S_MATRIKELNUMBER]; //S_MATRIKELNUMBER is 8
char first_name[S_FIRST_NAME]; //S_FIRST_NAME is 30
char last_name[S_LAST_NAME]; //S_LAST_NAME is 30
printf("Matrikelnummer: ");
scanf("%s", matrikelnumber);
printf("%s\n", matrikelnumber); //Prints the correct input
printf("Vorname: ");
scanf("%s", first_name);
printf("%s\n", matrikelnumber); //Prints matrikelnumber + first_name added at the end
printf("Nachname: ");
scanf("%s", last_name);
如果我为matrikelnumber 输入12345678,为last_name 输入Name,第一个printf 打印正确的字符串,而第二个打印12345678Name。
如何将所有 3 个字符串正确保存在相应的变量中?
【问题讨论】:
-
请显示示例输入。
-
@Yunnosch 已添加到问题中