微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

声明完后如何在C中编辑字符串? 1 2

如何解决声明完后如何在C中编辑字符串? 1 2

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

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

此检查之后,如果message1除原始值外不包含任何内容,它将打印该值,然后将message1重置为其原始值"empty"。但是,显然不是这样。我已经用Google搜索了答案,很困惑。

解决方法

您似乎在混淆数组语义和指针语义。

如果您的字符串(是数据 format )存储在数组中,则可以更改单个字符。但是您不能分配一个数组。所以这行

        message1 = "empty";

成为约束冲突。相反,您应该使用strcpy()或更好的snprintf()(不要试图使用strncpy()不是更安全的strcpy()) 。同样,您无法有意义地比较数组和字符串文字。所以这行

if(message1 != "empty");

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

如果您不需要修改单个字符,则可以使用char *指向字符串的开头。然后该分配有效,并且比较可能是 好的(它依赖于编译器合并标准中不需要的字符串文字,但是所有好的编译器都可以这样做)。

,

需要交换两件事。

1。

if (message1 != "empty");

使用strcmp()比较字符串。逻辑运算符不用于在C中的字符串之间进行比较。

if (strcmp(message1,"empty"))
{
    ....
}

2。

message1 = "empty";

您不能通过字符串在C中分配数组。为此使用strcpy

strcpy(message1,"empty");

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。