[英]Cannot assign a char array to my struct array's third slot
#include <stdio.h>
#include <string.h>
#define NAMELENGTH 20
#define MAXPEOPLE 10
struct people{
char name[NAMELENGTH];
int ratings[MAXPEOPLE];
};
int main(void)
{
struct people *men[MAXPEOPLE];
strcpy(men[2]->name,"pie");
return 0;
}
在尝试为男性分配任何值时崩溃[2] - >名称男性[] - >名称是一个字符数组,前两个插槽men [0] - > name和men [1] - > name工作正常。
men[2]
不是指针所以当你使用->
运算符时,你试图取消引用不是指针的东西。 您必须使用malloc
,然后您可以使用指向已分配空间的指针
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define NAMELENGTH 20
#define MAXPEOPLE 10
struct people{
char name[NAMELENGTH];
int ratings[MAXPEOPLE];
};
int main(void)
{
struct people *men[MAXPEOPLE];
men[2] = malloc(sizeof(struct people));
strcpy(men[2]->name,"pie");
return 0;
}
关于它(对你来说)前2个'槽'的工作原理,它确实不应该因为那些指针也未定义。 对我来说,它仅适用于索引0。
您只创建了一个指针数组,而不是一个struct people
:
struct people *men[MAXPEOPLE];
这只会创建一个指针数组,但指针尚未指向任何指针,因为您没有为它们分配任何空间。 这意味着您要复制到实际不存在的name
。 要创建所需的struct people
:
struct people men[MAXPEOPLE];
strcpy(men[2].name,"pie");
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.