Struct 有人能告诉我为什么我的扫描不是';不行吗?
我不熟悉结构和指针,我看不出这段代码有什么问题:Struct 有人能告诉我为什么我的扫描不是';不行吗?,struct,scanf,Struct,Scanf,我不熟悉结构和指针,我看不出这段代码有什么问题: 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].i
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);
}
}
好像它忽略了我在n之后输入的所有内容。有什么想法吗?char*name是一个指针,但您尚未为其分配任何内存。要么给它一个固定大小的字符名[100],要么分配一些内存。
您的scanf仅获得1个字符,您可能需要%s(字符串)而不是%c(字符)
scanf(“%c”,cap[i].name)代码>->scanf(“%s”,cap[i].name)代码>和字符*名称代码>->字符名[30]
(最大名称长度为29。是否有任何方法可以动态分配内存,以便我只拥有所需的内存?是的,有:malloc
我如何精确地分配字符串所需的内存?*name=malloc(1*sizeof(char)),在结构中;之后是什么?是时候执行一些搜索@AnttiDegl.)如果您确实只需要1个字符,请初始化一个数组。如果希望每个名称的长度完全正确,则必须首先扫描到允许的最大长度的字符数组中,然后是strcpy(在malloc之后)
0 (null)
1 (null)
2 (null)