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

对于我想做的事情,这是错误的 c 代码。我希望用相同长度的新字符串覆盖内存中的字符串。我不断收到类似类型不兼容的错误。

4

5 回答 5

5

使用strncpy

char chararray[6];
(void)strncpy(chararray, "abcdefgh", sizeof(chararray));
于 2011-04-20T20:48:12.763 回答
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));
}
于 2011-04-20T20:48:43.607 回答
1

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

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

至少,您希望将 32 变成一个命名常量。您还必须小心缓冲区溢出;在 C 中,这没有被检查。

于 2011-04-20T20:51:04.483 回答
1
memcpy(A,"11111111111111111111111111111111",32);
于 2011-04-20T20:47:58.380 回答
0

看看库函数strcpy

于 2011-04-20T20:48:28.517 回答