如何在C中使用新的字符数组覆盖字符数组(AKA为字符串)?

时间:2011-04-20 20:44:55

标签: c arrays char incompatibletypeerror

int main(void) {
  ...
  char A[32] = "00000000000000001111111111111110"; 
  ...
  A = "11111111111111111111111111111111";
}

这是我想要做的错误的c代码。我希望内存中的字符串被一个长度相同的新字符串覆盖。我一直在遇到不兼容的类型错误。

5 个答案:

答案 0 :(得分:3)

使用strncpy

char chararray[6];
(void)strncpy(chararray, "abcdefgh", sizeof(chararray));

答案 1 :(得分:1)

使用strcpy(char *destination, const char *source);

#include <string.h>

int main(void) {
  ...
  char A[32] = "00000000000000001111111111111110"; 
  ...
  strcpy(A, "11111111111111111111111111111111");
}

虽然更安全strncpy(char *destination, const char *source, size_t num),但只会复制num个字符数量,从而阻止超出目的地范围:

#include <string.h>

int main(void) {
  ...
  char A[32] = "00000000000000001111111111111110"; 
  ...
  strncpy(A, "11111111111111111111111111111111", sizeof(A));
}

答案 2 :(得分:1)

在其他可能的方式中,你可以做到

memcpy(A, "11111 etc.", 32);

您希望至少将32变为命名常量。你还必须小心缓冲区溢出;在C中,这不会被检查。

答案 3 :(得分:0)

memcpy(A,"11111111111111111111111111111111",32);

答案 4 :(得分:0)

查看库函数strcpy