C语言:更改字符串数组的内容

时间:2014-02-10 16:48:52

标签: c arrays string assign

我无法更改包含字符串的变量的内容。我可能正在考虑这个字面上比较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

3 个答案:

答案 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。