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