char*
変数は空の文字列を指しますか?
最初の文字が「\ 0」かどうかを確認します。また、ポインターがNULLかどうかも確認する必要があります。
char *c = "";
if ((c != NULL) && (c[0] == '\0')) {
printf("c is empty\n");
}
これらのチェックの両方を関数に入れて、便利で簡単に再利用できるようにすることができます。
編集:ifステートメントでは、次のように読み取ることができます。「cがゼロではなく、文字配列 'c'の最初の文字が '\ 0'またはゼロではない場合、...」.
&&
は、単に2つの条件を組み合わせたものです。基本的にこれを言うようなものです:
if (c != NULL) { /* AND (or &&) */
if (c[0] == '\0') {
printf("c is empty\n");
}
}
明確でない場合は、良いCプログラミングの本を手に入れたいかもしれません。 「The C Programming Language」という本をお勧めできます。
上記と同等の最短バージョンは次のとおりです。
if (c && !c[0]) {
printf("c is empty\n");
}
私の好ましい方法:
if (*ptr == 0) // empty string
おそらくより一般的:
if (strlen(ptr) == 0) // empty string
NULL
のポインターを確認し、strlen
を使用して、0
を返すかどうかを確認します。NULL
チェックは、NULL
ポインターをstrlen
に渡すとndefined Behaviorを呼び出すため重要です。
空の文字列には、単一のヌルバイトがあります。テストif (s[0] == (char)0)
ライブラリ関数は最適な方法で実装されているため、strlen関数を使用することをお勧めします。
だから、if(strlen(p)== 0)//空の文字列を書きます
チャンスを与えてください:
関数gets(string)を介して文字列を取得してから、if(string [0] == '\ 0')として条件を確認してください。
if (!*ptr) { /* empty string */}
同様に
if (*ptr) { /* not empty */ }