回 帖 发 新 帖 刷新版面

主题:字符串变量赋值给字符串变量问题

有两个字符串变量,
char a[30];
char b[26]="hello,world!"
想把b中的字符串赋值给a,怎么弄?
a=b;这样不行。

回复列表 (共5个回复)

沙发

strncpy

板凳

strcpy( a, b );

3 楼

佩服楼上二位的耐心。本对这类问题,没什么兴趣。不过,受二位影响,也补充点东西吧。
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 楼

方案1对于此题OK,不过对于特殊情况可能会有问题哈:)
比如目标A与源B内存空间相互重叠时,A在B前、B在A前。都有不同的处理方式哈:)

5 楼

[quote]方案1对于此题OK,不过对于特殊情况可能会有问题哈:)
比如目标A与源B内存空间相互重叠时,A在B前、B在A前。都有不同的处理方式哈:)[/quote]
方案1假设的情况是不重叠。事实上,对于LZ描述的前提: char ch1[], char ch2[]...,也确实不会重叠。
补充:如果处理重叠,请使用更安全的方案3.

我来回复

您尚未登录,请登录后再回复。点此登录或注册