zhuwei9999 发表于 2019-10-12 19:51:14

字符串拷贝出错

目的是将字符串2拷贝到1,预期输出如下:
str1:new string
str2:new string
str3:copy successfully
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
    char str1[]="original string";
    char str2[]="new string";
    char str3[]="hahah";
    strcpy(str1, str2);
    strcpy(str3, "copy successfully");
    printf("str1:%s\n str2:%s\n str3:%s\n",str1,str2,str3);
    return 0;
}
输出的结果是:
str1:
str2:uccessfully
str3:copy successfully
不懂为什么会这样

zhuwei9999 发表于 2019-10-12 19:55:16

我用的是codeblocks

superbe 发表于 2019-10-12 20:43:45

char str3[]="hahah"; 这行改成
char str3;

因为copy successfully的长度超过了str3分配的长度(hahah和\0共6个),导致溢出。
改成大于copy successfully长度加+1就可以了。+1是为字符串的结束标志 \0 预留一个字节。

zhuwei9999 发表于 2019-10-14 23:14:33

superbe 发表于 2019-10-12 20:43
char str3[]="hahah"; 这行改成
char str3;



谢谢您
页: [1]
查看完整版本: 字符串拷贝出错