我是结构和指针的新手,我无法看清这段代码的错误:
struct {
int id;
char* name;
} cap[50];
void xep() {
int i, n;
scanf("%d", &n);
for (i = 0; i < n; i++) {
cap[i].id = i;
scanf("%c", cap[i].name);
printf("%d %s\n", cap[i].id, cap[i].name);
}
}
在main中调用xep函数时,它只打印:
0 (null)
1 (null)
2 (null)
喜欢它忽略我在n之后输入的所有内容。有什么想法吗?
答案 0 :(得分:1)
char * name是一个指针,但你没有为它分配任何内存。给它一个固定大小的字符名称[100]或分配一些内存。 你的scanf只有1个字符,你可能想要%s(字符串)而不是%c(字符)