首页 > 解决方案 > 一旦你已经声明了它,你如何在 C 中编辑一个字符串?

问题描述

提前感谢您的帮助。我正在用 C 语言编写一个简单的程序,并且已经声明了两个名为“message1”和“message2”的字符串,我将如何更改这些字符串的内容?我最初用“空”填充它们,以便在下面显示的代码段中进行检查:

char message1[32] = "empty";
…
if(message1 != "empty");
{
        printf("\n[USER 1]: %s", message1);
        message1 = "empty";
}

在此检查之后,如果message1包含原始值以外的任何内容,它将打印所述值,然后重置message1为其原始值"empty"。然而,显然情况并非如此。我已经用谷歌搜索了答案并且很困惑。

标签: c

解决方案


您似乎将数组语义与指针语义混淆了。

如果您的字符串(这是一种数据格式)存储在数组中,您可以更改单个字符。但是您不能分配给数组。所以这条线

        message1 = "empty";

成为约束违规。相反,您应该使用strcpy(), 或更好snprintf()(不要试图使用strncpy()- 它不是更安全的strcpy())。此外,您无法有意义地比较数组和字符串文字。所以这条线

if(message1 != "empty");

也没有任何意义。使用该strcmp()功能。(此外,分号可能不是您想要的,因为它终止了语句,因此以下复合语句不受该if语句控制。

如果您不需要修改单个字符,那么您可以只使用 achar *指向字符串的开头。那么赋值是有效的,并且比较可能是好的(它依赖于编译器整合标准不需要的字符串文字,但所有好的编译器都会这样做)。


推荐阅读