我正在尝试修改我在结构中的char *,因为我遇到了一些问题。
#define MAXLINELENGTH 1000
#define MAXINSTRUCTIONS 65536
struct labelMem {
char *name;
int pc;
};
struct labelStr {
struct labelMem labels[MAXINSTRUCTIONS];
};
while (func(string s) == 0) {
strncpy(programLabels.labels[labelCounter].name, label, MAXLINELENGTH);
labelCounter++;
}
我尝试了几种不同的方法来安排我的结构数组,但每次我都有修改我的char * var的问题。
如何解决这个问题的任何想法将不胜感激。
答案 0 :(得分:2)
如果没有调用malloc
指针,实际上并没有指向任何东西。
在使用指针之前,需要为指针分配内存。您可以将程序更改为
while (func(string s) == 0) {
// Allocate memory and check for errors
programLabels.labels[labelCounter].name = malloc (strlen (label) + 1);
if (!programLabels.labels[labelCounter].name) { /* handle error */ }
strncpy(programLabels.labels[labelCounter].name, label, MAXLINELENGTH);
labelCounter++;
}