[英]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.