这几天放假,我把C的有些东西稍微看了一下,上机调试某些不是很熟悉的函数。期间发现有关strcat的一个小问题,也算是个经验吧。
《C程序设计》上都说过,strcat(str1,str2);中的str1应该足够大才行。我的例程如下:
#include <stdio.h>
void main()
{ char t='0',d[21]={"So just do it!"},c[39]={"Nothing can be done,if you don't move!"};
puts(d);
putchar('/n');
puts(c);
putchar('/n');
strcat(c,d);
puts(c);
printf("Press any key to continue/n");
t=getchar();
}
很明显,字符串数组c是比较短的。我起初以为这是书上的一个小毛病,后来发短信询问学计算机的同学,他跟我讲TC就是这么设计的。我这么做的结果实际是把第一个字符串后的某段空间给更改了,且其正好不是只读的,这样实际是有危险性的。
后来自己想想也是那么回事,书上也没错,只是TC当初应该在这种问题上提示一下。虽然高手们不会犯这种错误,但像我这种菜鸟,得这么一下才能深入的了解。