丙 |指针、数组和分段问题

C | pointers,arrays and segmentation issue

我有以下片段

#include <stdio.h>
#include <string.h>
#define SIZE 3
typedef struct node{
    char *name;
    int id;
} Rec;
int main() {
    Rec n[SIZE], *p;
    int i;
    char *s[]= { "one", "two","three"};

    for (i = 0; i < SIZE; i++){
        strcpy(n[i].name, s[i]);
        //n[i].id = i;
    }
    p = n;
    for (i = 0; i < SIZE; i++){
        //printf("%2d %s\n", p->id, p->name);
        p++;
    }
    getchar();
}

我已经在这个问题上坐了将近一个小时了,我无法解决这个问题。 该程序在到达 strcpy() 时被踢出。 我不知道如何解决这个问题,但我感觉 n 的分配有问题。 我确实尝试将其转换为 malloc,但结果保持不变..

提前致谢!

您还没有为 structname 成员分配内存。您需要为它们分配内存

 for (i = 0; i < SIZE; i++){
    n[i].name = malloc(strlen(s[i]) + 1);
}