1

次のコードを使用して、バッファに null 終端を追加しようとしています。しかし、ヌルターミネータを渡すことができないようです.これは正しい方法ですか? バッファを strlen すると、値は 10 になりますが、キー入力したのは 9 文字だけです。

char buffer[256];
int n;

bzero(buffer,256);
fgets(buffer,255,stdin);
buffer[n-1]="\0";
4

3 に答える 3

5

charではなく文字列に。を割り当てています buffer[n-1] = "\0";。 代わりに
試してください 。buffer[n-1] = '\0';

于 2013-02-04T16:09:39.990 に答える
0

右側の値の型が間違っています (char *変換するものcharが必要な場合)。

適切な方法は次のとおりです。

buffer[n - 1] = '\0';

これは次のように書くこともできます:

buffer[n - 1] = 0;

しかし、最初のものは、私たちが文字を扱っていることを明確にしています. 私nもどこかに設定されていると思います。

bufferが配列で、最後の文字がゼロに設定されていることを確認したい場合は、次を使用できます。

buffer[sizeof buffer - 1] = '\0';

これは、sizeof定数などの繰り返しを避けるために演算子を使用します。が適切な配列である場合にのみ機能することに注意してくださいbuffer。ポインター ( char *buffer;) しかない場合は、期待どおりの動作をしません。

于 2013-02-04T16:19:03.207 に答える