这个问题就是典型的缓冲区溢出的问题。书上给了个netbsd中banner的例子以及应该使用的正确函数。正确的应该使用:strlcpy,strncpy,strlcat,fgets,snprintf,vsnprintf,getcwd;等。如果在vs下开发,则可以利用*_s等。其中的例子:char message[MAXMSG]; if (*argv) { strcpy(message, *argv); while (*++argv) { strcat(message, " "); strcat(message, *argv); } nchars = strlen(message); } else {。。。} 正确的:char *message; if (*argv) { for(i=0, j=0; i < argc; i++) j += strlen(a
文章来源:
http://blog.csdn.net/mejy/archive/2008/01/24/2062731.aspx