-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 != NULLまたはについての言及はありません*s==""。言うまでもありません*s==""が、おそらく意味がありません*s == '\0'


C の puts() に空の文字列を渡すとどうなりますか?

標準が言うように:

puts 関数は文字列 ... を書き込み、改行文字を出力に追加します。

したがって、最初に空の文字列が出力されます。つまり、何も出力されず、次に改行が出力されます。カーソルを効果的に次の行に移動します。

于 2013-03-19T12:31:15.133 に答える