gpt4 book ai didi

c - 在 C 中,我无法将字符串数组的单个元素复制到另一个字符串

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

我有一个字符串“prompt”,其中包含一串字符。用户必须能够通过用户输入更改提示,我已收集这些输入并将其分隔(使用空格作为分隔符)到 char 字符串(标记)数组中。

例如,假设:

char **tokens[2] = {"setprompt", "newprompt"};
char *prompt = "oldprompt";

if(strcmp(tokens[0], "setprompt") == 0)
{
strcpy(prompt, tokens[1]);
}

strcmp() 函数工作得很好,但是当它到达 strcpy() 时,tokens[1] 中的元素(其中字符串 "newprompt") 未复制到字符串提示中。这是我的问题。

除了使用 strncpy() 之外,我还尝试过进行故障排除,但我认为每个变量/指针的声明都存在问题。任何帮助或想法都会很棒。

注意:在我的实际程序中,标记数组的确定大小不是 2。为了简单起见,对这个示例进行了修改。谢谢!

最佳答案

您的问题是这一行:

char *prompt = "oldprompt";

它指向常量内存并且不能修改(它的定义方式)。考虑将其保留为只读并创建自己的缓冲区来代替复制和修改,例如:

#define MAX_STRING_SIZE 255

char *tokens[2] = {"setprompt", "newprompt"};
char *prompt = "oldprompt";
char myBuffer[MAX_STRING_SIZE];

strcpy(myBuffer, prompt );

if(strcmp(tokens[0], "setprompt") == 0)
{
strcpy(myBuffer, tokens[1]);
}

关于c - 在 C 中,我无法将字符串数组的单个元素复制到另一个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47297861/

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