字符串拷贝出错
目的是将字符串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
不懂为什么会这样
我用的是codeblocks char str3[]="hahah"; 这行改成
char str3;
因为copy successfully的长度超过了str3分配的长度(hahah和\0共6个),导致溢出。
改成大于copy successfully长度加+1就可以了。+1是为字符串的结束标志 \0 预留一个字节。 superbe 发表于 2019-10-12 20:43
char str3[]="hahah"; 这行改成
char str3;
谢谢您
页:
[1]