int main(void) {
...
char A[32] = "00000000000000001111111111111110";
...
A = "11111111111111111111111111111111";
}
对于我想做的事情,这是错误的 c 代码。我希望用相同长度的新字符串覆盖内存中的字符串。我不断收到类似类型不兼容的错误。
int main(void) {
...
char A[32] = "00000000000000001111111111111110";
...
A = "11111111111111111111111111111111";
}
对于我想做的事情,这是错误的 c 代码。我希望用相同长度的新字符串覆盖内存中的字符串。我不断收到类似类型不兼容的错误。
使用strncpy:
char chararray[6];
(void)strncpy(chararray, "abcdefgh", sizeof(chararray));
使用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));
}
在其他可能的方式中,你可以做
memcpy(A, "11111 etc.", 32);
至少,您希望将 32 变成一个命名常量。您还必须小心缓冲区溢出;在 C 中,这没有被检查。
memcpy(A,"11111111111111111111111111111111",32);
看看库函数strcpy
。