【发布时间】:2014-05-05 14:27:23
【问题描述】:
我有这个代码。
#include <stdio.h>
struct name
{
int age;
char fullname[20];
};
struct name names[20];
int main()
{
int n,i;
printf("Count of names:\n");
scanf("%d",&n);
for (i = 0; i < n; i++)
{
printf("Name %d : ",i);
scanf("%[^\n]s",names[i].fullname);
}
return 0;
}
当我执行时:
rupam@linux ~ $ ./a.out
Count of names:
5
Name 0 : Name 1 : Name 2 : Name 3 : Name 4 :
rupam@linux ~ $
它不等待用户输入。不知何故,scanf 不起作用。
好吧,如果我使用
scanf("%s",names[i].fullname);
它适用于单字输入。 我在这里做错了什么?
【问题讨论】:
-
去掉
[^\n]。 -
@BLUEPIXY:格式字符串的虚假
s是从哪里得到的? -
@Deduplicator 啊!复制并粘贴。
-
@BLUEPIXY 谢谢,在
%[^\n]s工作之前添加一个空格。 -
尝试
scanf(" %[^\n]",names[i].fullname);:因为换行符剩余(scanf("%d",&n);,)。