我无法更改包含字符串的变量的内容。我可能正在考虑这个字面上比较int而不是数组。也许必须先冲洗阵列? 非常感谢。
// declare with maximum size expected +1 (for terminator 0)
char myString1[20] = "Hello"; //declare and assign one line - OK
myString1[20] = "Hello Longer"; // change contents - fails
myString1[] = "Hello Longer"; // change contents - fails
myString1 = "Hello Longer"; // change contents - fails
答案 0 :(得分:2)
这是C,而不是面向对象的语言,负责为您复制字符串。您需要使用string
库。例如:
char myString1[20] = "Hello";
strncpy(myString1, "Hello Longer", 20);
答案 1 :(得分:0)
您需要使用strncpy
之类的函数来复制字符串。
答案 2 :(得分:0)
在C中,分配运算符=
不适用于数组。除了初始化者之外。
更多关于此
myString1[20] = "Hello Longer"
是一种类型不匹配,因为myString1[20]
是char
,您显然只能指定char
或可以转换为char
的内容。
要欺骗你,你可以这样做:
#include <stdio.h>
struct Str_s
{
char myString[20];
};
int main(void)
{
struct Str_s str1 = {
"Hello"
};
struct Str_s str2 = {
"World"
};
printf("str1='%s'\nstr2='%s'\n", str1.myString, str2.myString);
str2 = str1;
printf("str1='%s'\nstr2='%s'\n", str1.myString, str2.myString);
return 0;
}
这应该打印:
Hello World
Hello Hello
显然,赋值运算符适用于struct
s。