丙 |指针、数组和分段问题
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
,但结果保持不变..
提前致谢!
您还没有为 struct
的 name
成员分配内存。您需要为它们分配内存
for (i = 0; i < SIZE; i++){
n[i].name = malloc(strlen(s[i]) + 1);
}
我有以下片段
#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
,但结果保持不变..
提前致谢!
您还没有为 struct
的 name
成员分配内存。您需要为它们分配内存
for (i = 0; i < SIZE; i++){
n[i].name = malloc(strlen(s[i]) + 1);
}