C99 标准是否定义了以下行为:
puts(s);// s != NULL but *s==""
我在 Linux 手册页中查找过这一点,但没有发现任何有用的东西。有人可以澄清一下吗?
C99 是这样说的puts:
7.19.7.10
puts函数概要
Run Code Online (Sandbox Code Playgroud)#include <stdio.h> int puts(const char *s);描述
put 函数将 指向的字符串写入
s指向的流stdout,并将换行符附加到输出。不写入终止空字符。退货
如果发生写入错误,puts 函数将返回 EOF;否则返回一个非负值。
没有提到s != NULL或*s==""。更不用说*s==""甚至没有意义,你可能是指*s == '\0'。
如果我将空字符串传递给 C 中的 put() 会发生什么?
正如标准所说:
put 函数写入字符串 ...,并将换行符附加到输出中。
因此,首先打印空字符串,即不打印任何内容,然后打印换行符。它有效地将光标移动到下一行。