关于char buf[128]的初始化问题
char buf[128];
char a[10]="1233445";
strcat(buf,a);
printf("%s",buf);
打印出来的是乱码?为什么?是因为buf没有初始化吗?
char buf[128];
FILE *fp = fopen("a.txt", "r");
while(NULL != fgets(buf, 128, fp))
printf("%s", buf);
fclose(fp);
这样buf没有初始化,却可以正常运行,为什么呢?
[解决办法]
原型
extern char *strcat(char *dest,char *src);
用法
#include <string.h> 在C++中,则存在于<cstring>头文件中。
功能
把src所指字符串添加到dest结尾处(覆盖dest结尾处的'\0')并添加'\0'。
说明
src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。 返回指向dest的指针。
-------------------------------------
strcat首先要找到dest所指向的区域为'\0'的位置,然后把src指向的区域的内容添加到dest的结尾处去,你没有初始化buf,strcat找不到dest的尾巴
打印出来的也是一串乱码了咯,而且打印出来的内容不是128个字节,可能小于也可能大于128个字节的