-1

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

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

我曾在 Linux 联机帮助页中查找过此内容,但没有发现任何用处。有人可以澄清一下吗?

4

1 回答 1

4

这就是 C99 所说的puts

7.19.7.10puts功能

概要

#include <stdio.h>
int puts(const char *s);

描述

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

退货

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

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


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

正如标准所说:

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

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

于 2013-03-19T12:31:15.133 回答