strcat(buf, “\n”); // 这个地方是不是存在越界 ???
/* * Print a message and return to caller. * Caller specifies "errnoflag". */ static void err_doit(int errnoflag, int error, const char *fmt, va_list ap) { char buf[MAXLINE]; vsnprintf(buf, MAXLINE-1, fmt, ap); if (errnoflag) snprintf(buf+strlen(buf), MAXLINE-strlen(buf)-1, ": %s", strerror(error)); strcat(buf, "\n"); // 这个地方是不是存在越界 ??? fflush(stdout); /* in case stdout and stderr are the same */ fputs(buf, stderr); fflush(NULL); /* flushes all stdio output streams */ }
解决方案
35
是
5
你要看上面两句最多写入了多少字符啊,然后留了多少字符空间出来