首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于char buf[128]的初始化有关问题

2012-06-01 
关于char buf[128]的初始化问题char buf[128]char a[10]1233445strcat(buf,a)printf(%s,buf)打印

关于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个字节的

热点排行