c - 修改结构中的 char *

标签 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 时都遇到问题。

任何有关如何解决此问题的想法都将不胜感激。

最佳答案

没有调用 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++;
}

关于c - 修改结构中的 char *,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50207392/

相关文章:

c - printf 结构体成员

c++ - 如何在 C++ 中访问结构内部的结构?

c - 取消引用指向不完整类型的指针时出错,我不明白为什么

java - 两个数组或一个 HashMap 将字符串转换为摩尔斯电码?

Java - 根据两个属性值对 JSONArray 进行排序

javascript - 如何在 JS 对象中获取父属性?

c++ - ".exe has stopped working"当我尝试计算字符串时

c - ARM汇编跳转到地址

c - 在 OpenCV 中将 Ipl 图像除以标量

c - 如何正确地将数组作为函数参数传递?