指针在C中失去值

指针在C中失去值

我有一个struct它有一个char *作为查找它的名字。我还声明了一个array of struct。我试图为结构指定一个名称,但我遇到的问题是char *继续将值更改为设置的姓氏。这破坏了我代码的逻辑。我试过使用malloc(),但这并没有改变结果。
代码:

struct foo {
       char* label;
}
typedef struct foo fum;
fum foolist[25];
/*initialize all elements in foo list to be "empty"*/
bool setArray(char* X) {
      for(int i =0; i <25;i++) {
           if(strncmp("empty", foolist[i].label,5*sizeof(char))==0) {
                    //tried char* temp = (char*)malloc(32*sizeof(char));
                    //foolist[i].label = temp; no change.
                    foolist[i].label = X;
                    return true;
           }
      }
      return false;
}

我希望在声明完成后标签不会用'X'更改,我已经尝试过使用malloc(),但可能不正确。

最佳答案

您可以执行以下任一操作:

foolist[i].label = malloc(strlen(X) + 1);
if ( !foolist[i].label ) {
    perror("couldn't allocate memory"):
    exit(EXIT_FAILURE);
}
strcpy(foolist[i].label, X);

或者,如果您有strdup()可用:
foolist[i].label = strdup(X);
if ( !foolist[i].label ) {
    perror("couldn't allocate memory"):
    exit(EXIT_FAILURE);
}

关于c - 指针在C中失去值(value),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29738634/

10-11 20:05