int main(void) {
...
char A[32] = "00000000000000001111111111111110";
...
A = "11111111111111111111111111111111";
}
这是我想要做的错误的c代码。我希望内存中的字符串被一个长度相同的新字符串覆盖。我一直在遇到不兼容的类型错误。
答案 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
。