次のコードを使用して、バッファに null 終端を追加しようとしています。しかし、ヌルターミネータを渡すことができないようです.これは正しい方法ですか? バッファを strlen すると、値は 10 になりますが、キー入力したのは 9 文字だけです。
char buffer[256];
int n;
bzero(buffer,256);
fgets(buffer,255,stdin);
buffer[n-1]="\0";
次のコードを使用して、バッファに null 終端を追加しようとしています。しかし、ヌルターミネータを渡すことができないようです.これは正しい方法ですか? バッファを strlen すると、値は 10 になりますが、キー入力したのは 9 文字だけです。
char buffer[256];
int n;
bzero(buffer,256);
fgets(buffer,255,stdin);
buffer[n-1]="\0";
charではなく文字列に。を割り当てています
buffer[n-1] = "\0";
。
代わりに
試してください
。buffer[n-1] = '\0';
右側の値の型が間違っています (char *
変換するものchar
が必要な場合)。
適切な方法は次のとおりです。
buffer[n - 1] = '\0';
これは次のように書くこともできます:
buffer[n - 1] = 0;
しかし、最初のものは、私たちが文字を扱っていることを明確にしています. 私n
もどこかに設定されていると思います。
buffer
が配列で、最後の文字がゼロに設定されていることを確認したい場合は、次を使用できます。
buffer[sizeof buffer - 1] = '\0';
これは、sizeof
定数などの繰り返しを避けるために演算子を使用します。が適切な配列である場合にのみ機能することに注意してくださいbuffer
。ポインター ( char *buffer;
) しかない場合は、期待どおりの動作をしません。