我是结构和指针的新手,我看不出这段代码有什么问题:
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 %sn", cap[i].id, cap[i].name);
}
}
在 main 中调用 xep 函数时,它只打印:
0 (null)
1 (null)
2 (null)
就像它忽略了我在 n 之后输入的所有内容一样。 有什么想法吗?
char* 名称是一个指针,但您尚未为其分配任何内存。要么给它一个固定大小的字符名称[100],要么分配一些内存。你的scanf只得到1个字符,你可能想要%s(字符串)而不是%c(字符)