fprintf和NULL终止符

时间:2012-09-27 14:35:59

标签: c string null printf

我正在使用fprintf将一个字符串附加到文档中,这是我有一个问题的行:

fprintf(win, bff[i - 2] != '\n' && bff[i - 2] != '\r' ? "\nmultiscreen=1" : "multiscreen=1");

代码有效,它会将multiscreen=1追加到文件中的下一个可用行。

但是,如果我理解正确,那么不会在NULL的末尾添加multiscreen=1字符吗? 这是否重要,因为我将它写入文件并且字符串中的尾随NULL是C的东西?

或者使用fputs代替fprintf更正确吗?

3 个答案:

答案 0 :(得分:5)

字符串文字自动将0作为其中的最后一个字符。所以你不需要自己添加一个。

NUL终止符仅用于fprintf(或者您正在使用的任何字符串函数)以知道何时停止从指针写入字符;实际上没有NUL写入文件。

是的,我建议您使用fputs代替fprintf,因为您没有使用fprintf的任何格式设置,除非您在评论中使用pmg的建议使用格式化序列的问题。

答案 1 :(得分:1)

您不需要文件中的NULL。这是一个C约定,与文件无关。你很好。

答案 2 :(得分:1)

如果您写入文件,则不需要尾随\0。它只是C用于分隔字符串的方式,因为否则无法知道字符串的结束位置