修改结构中的char *

时间:2018-05-07 05:07:24

标签: c arrays struct char c-strings

我正在尝试修改我在结构中的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的问题。

如何解决这个问题的任何想法将不胜感激。

1 个答案:

答案 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++;
}