主题:字符串变量赋值给字符串变量问题
qdlixiuzhong
[专家分:30] 发布于 2011-07-25 20:39:00
有两个字符串变量,
char a[30];
char b[26]="hello,world!"
想把b中的字符串赋值给a,怎么弄?
a=b;这样不行。
回复列表 (共5个回复)
沙发
cgl_lgs [专家分:21040] 发布于 2011-07-25 22:23:00
strncpy
板凳
bruceteen [专家分:42660] 发布于 2011-07-26 08:14:00
strcpy( a, b );
3 楼
cxxcomp [专家分:2370] 发布于 2011-07-27 23:44:00
佩服楼上二位的耐心。本对这类问题,没什么兴趣。不过,受二位影响,也补充点东西吧。
1:
void w_strcpy(char* dest, const char* source)
{
assert(source != NULL);
while (*dest++ = *source++)
;
}
2:
memcpy(ch_dest, ch_source, sizeof(char)*max_size);
3:
memmove(ch_dest, ch_source, sizeof(char)*max_size);
均可实现复制。
4 楼
cgl_lgs [专家分:21040] 发布于 2011-07-28 09:45:00
方案1对于此题OK,不过对于特殊情况可能会有问题哈:)
比如目标A与源B内存空间相互重叠时,A在B前、B在A前。都有不同的处理方式哈:)
5 楼
cxxcomp [专家分:2370] 发布于 2011-07-28 13:21:00
[quote]方案1对于此题OK,不过对于特殊情况可能会有问题哈:)
比如目标A与源B内存空间相互重叠时,A在B前、B在A前。都有不同的处理方式哈:)[/quote]
方案1假设的情况是不重叠。事实上,对于LZ描述的前提: char ch1[], char ch2[]...,也确实不会重叠。
补充:如果处理重叠,请使用更安全的方案3.
我来回复