如果我将空字符串传递给 C 中的 put() 会发生什么?

son*_*hir 0 c99

C99 标准是否定义了以下行为:

puts(s);// s != NULL but *s==""

我在 Linux 手册页中查找过这一点,但没有发现任何有用的东西。有人可以澄清一下吗?

Sha*_*baz 5

C99 是这样说的puts

7.19.7.10puts函数

概要

#include <stdio.h>
int puts(const char *s);
Run Code Online (Sandbox Code Playgroud)

描述

put 函数将 指向的字符串写入s指向的流stdout,并将换行符附加到输出。不写入终止空字符。

退货

如果发生写入错误,puts 函数将返回 EOF;否则返回一个非负值。

没有提到s != NULL*s==""。更不用说*s==""甚至没有意义,你可能是指*s == '\0'


如果我将空字符串传递给 C 中的 put() 会发生什么?

正如标准所说:

put 函数写入字符串 ...,并将换行符附加到输出中。

因此,首先打印空字符串,即不打印任何内容,然后打印换行符。它有效地将光标移动到下一行。