gpt4 book ai didi

c - 如何从 char* 而不是地址获取字符串的值

转载 作者:太空宇宙 更新时间:2023-11-04 08:41:44 25 4
gpt4 key购买 nike

我正在尝试比较模式。所以我有将模式保存为字符串的结构,但是我希望能够构建一个字符串并将该字符串的 VALUE 存储在结构中。目前,我只是复制我的字符串的地址。

typedef struct
{
int emp;
char *context;
int numOnes;
int numZeros;


}Pattern;

char *patt, str[t+1];
patt = str;
while(count<t){
//printf("Stream: %d\n", stream[end]);
if(stream[end] == 1){
patt[count]= '1';
//writeBit(1);
}
else{
patt[count]='0';
//writeBit(0);
}


end--;
count++;
}
patt[count]=0;//building string


if(found == 0){//if pattern doesnt exist, add it in

patterns[patternsIndex].context = patt; //NEED HELP HERE. This copies the address not the actual value, which is what i need

patterns[patternsIndex].emp = 1;
prediction = 0;
checkPredict(prediction,stream[end],patternsIndex);
patternsIndex++;

found =1;
}

最佳答案

为避免使 Pattern.context 成为固定大小的数组并确保有足够的空间复制到您需要为 Pattern.context 动态分配内存以存储 patt 的副本。要么:

  • 使用 malloc() (记得为空终止符分配 strlen(patt) + 1)和 strcpy() :

    patterns[patternsIndex].context = malloc(strlen(patt) + 1);
    if (patterns[patternsIndex].context)
    {
    strcpy(patterns[patternsIndex].context, patt);
    }
  • 使用 strdup() :

    patterns[patternsIndex].context = strdup(patt);

无论哪种情况,请记住 free()不再需要时复制字符串:

free(patterns[patternsIndex].context);

关于c - 如何从 char* 而不是地址获取字符串的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23297174/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com