fprintf是否有长度限制?

时间:2016-10-25 19:12:37

标签: c linux core

A有下一个c ansi代码,在Linux版本2.6.32-431.11.2.el6.x86_64中

    fprintf(fpOut, "%s",cBuffer);

其中cBuffer是指向char的指针,如

    int bfnAddOutputFile(FILE *fpOut, char *cBuffer){/**/

        fprintf(fpOut, "%s",cBuffer);

        //code

        return ( TRUE );
    }

执行fprintf时,生成核心转储

    Program received signal SIGSEGV, Segmentation fault.
    0x00000038b2e6723e in fputs () from /lib64/libc.so.6

有一个最大长度的字符可以发送到fprintf,如果它是什么数字?

1 个答案:

答案 0 :(得分:3)

cBuffer可能不包含空终止符,这会使fprintf超出内存范围。

输出C字符串时,printf - 系列函数仅在遇到 null-terminator '\0')时停止,否则可以继续,直到他们尝试输出一块不属于的内存到您的程序,这会导致分段错误。