C -FPRINTF如果程序得分,则不写入文件



我当前使用Lexar进行流分析的编译器类。

在我的一半测试用例中,输出是完美的,没有任何问题,但其他数量seg故障。

我添加了一个fprintf(fp,"描述性文本 n");在每个关键字上,我可以遵循程序的流程,并使调试更加容易。但是,我的程序仅写入文件,如果没有seg错误。

有人知道怎么了,我怎么能总是写作?

打开文件时,将文件流设置为使用setvbuf()的线缓冲。将新线打印到文件缓冲区时,缓冲区将被冲洗。

FILE *fp = fopen("log.file", "a");
setvbuf(fp, NULL, _IOLBF, BUFSIZ);

这可以节省每个调用后必须添加fflush(fp);到打印功能。

文件io被缓冲。也就是说,fprintf()调用将数据实际传输到操作系统之前,将输出存储在几个调用中。如果发生segfault,该数据绝不会传输到OS。

尝试以下操作:

fprintf(fp, "descriptive textn"); 
fflush(fp);

相关内容

  • 没有找到相关文章

最新更新