【问题标题】:How to change content of character array in C? [duplicate]如何更改C中字符数组的内容? [复制]
【发布时间】:2017-08-08 11:07:02
【问题描述】:
char a[]="abcd";
a[]="zxc";
printf("%s",a);

它给了我一个错误说“错误:']'标记之前的预期表达式”。那我该如何改变我的字符数组的值呢?

【问题讨论】:

  • 你不能分配给一个数组,这是C语言的一个限制。你可以使用例如strcpy()来写入一个(char)数组。
  • a = "zxc"; 但您只是更改了a 指向的指针,而不是数组本身,因为它是一个常量字符数组。
  • @AndreKampling 无论您尝试哪种语法,您仍然无法分配给数组...
  • @FelixPalmen:谢谢。他必须使用const char* a = "abcd";。但正如其他人所说,例如使用strcpy
  • @Andre Kampling - 你不能改变它,因为a 不是可以改变的指针,因为它在存储中没有表示 - 只有表中的数据有。

标签: c arrays string character


【解决方案1】:

您不能将字符串分配给数组。

您必须使用strcpy() 或使用循环手动逐个字符地执行此操作:

strcpy(a, "zxc");

strncpy(a, "zxc", 4);   // Cause error's, be careful with that function.

a[0] = 'z';

【讨论】:

  • 我不会向初学者推荐strncpy
  • 确实如此,我写它只是为了完成。
  • 在这个玩具示例中毫无意义,但可以提供更完整的答案。
  • strncpy 容易出错且危险 - 使用时需要格外小心
  • 好的,请在 A 中记下它。
【解决方案2】:

您可以通过多种方式做到这一点 - 最重要的两种方式:

您可以更改数组中的特定元素

 a[2] = '3';

或复制一个新字符串

 strcpy(a, "wer");

但您需要记住,您的数组只有 5 个元素,包括尾随零

【讨论】:

  • 请不要将不完整的答案发布为“占位符”。
  • 没有o.O他不会写。
  • 问我毫无意义。你不认为我评论这只是为了好玩,是吗?请不要这样做,公平竞争。
猜你喜欢
  • 2012-10-23
  • 2014-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-04
  • 1970-01-01
  • 2020-09-04
  • 1970-01-01
相关资源
最近更新 更多