gpt4 book ai didi

c - 更新模块级状态字符串的正确方法

转载 作者:行者123 更新时间:2023-11-30 17:27:27 24 4
gpt4 key购买 nike

我有一个这样声明的模块级字符串:

char* sStatus = NULL;

该字符串可以为 NULL(无状态),也可以具有一些指示状态的关联字符串。状态字符串可以从程序的不同部分读取和写入,这是完全同步的,因此不存在并发问题。

我怎样才能最好地更新这个字符串?例如,如果我写这样的内容:

void addNewRecord(){
sStatus = "adding new record";
...
...
sStatus = "finished adding new record";
}

然后它就可以了,但我担心字符串是函数的本地字符串,所以一旦函数退出,字符串就不再有效?但是程序并没有崩溃。我打印出了指针的地址,它肯定不在堆栈上,并且似乎位于某种内存常量区域中,因此它应该是安全的。

尽管如此,我想知道处理这种数据结构使用的正确方法是什么。

最佳答案

您应该使用 strncpy() 复制字符串“adding new record”sStatus:

  memset(sStatus, '\0', strlen(sStatus));  //clear before update
strncpy(sStatus, "adding new record", strlen((const char *)"adding new record"));

当然,在将字符串复制到 sStatus 之前,应该先为其分配内存。

关于c - 更新模块级状态字符串的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26389402/

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