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



我有一个包含字符串的字符串"提示符"。用户必须能够使用用户输入更改提示,我已经收集了这些提示并将其分隔(使用空格作为分隔符(到一个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]);
}

相关内容

  • 没有找到相关文章

最新更新