如何解决声明完后如何在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 举报,一经查实,本站将立刻删除。