現在、小さなプログラムを書いていますが、コンパイル時にこのエラーが発生し続けます
エラー: 空の文字定数
有効な文字を空のスペースに置き換えようとしていることが原因であることに気付きましたc[i]=''
が、それを表す別の方法を見つけることができませんでした。
現在、小さなプログラムを書いていますが、コンパイル時にこのエラーが発生し続けます
エラー: 空の文字定数
有効な文字を空のスペースに置き換えようとしていることが原因であることに気付きましたc[i]=''
が、それを表す別の方法を見つけることができませんでした。
c[i]= '\0'
またはを使用できますc[i] = (char) 0
。
null/空の文字は単にゼロの値ですが、ゼロをエスケープした文字として表すこともできます。
文字に「文字なし」を格納することはできません-意味がありません。
別の方法として、null char などの特別な意味を持つ文字を格納し、'\0'
これを特別に扱うこともできます。
空のスペース char は' '
. null を探している場合、それは'\0'
.
はい、c[i]=''
有効なコードではありません。char'
'
などの文字定数を括弧で囲みます。間に char を書きません。 c[i] = 'A';
A
''
空のスペースは、スペースを割り当てたい場合は次のようにします。
c[i] = ' ';
// ^ space
割り当てたい場合は、次のnul char
ようにします。
c[i] = '\0';
// ^ null symbol
例:文字列がある場合 c[]
、文字列(ヌル\0
終了文字配列)であるとします。例えば:
char c[10] = {'a', '2', 'c', '\0'};
そして、2 番目の文字をスペースに置き換えます。
c[1] = ' ';
次のように printf を使用して印刷すると、次のようになります。
printf("\n c: %s", c);
出力は次のようになります。
c: a c
// ^ space printed
そして、2 番目の文字を '\0' に置き換えます。
c[1] = '\0';
出力は次のようになります。
c: a
文字列が で終わっているため\0
です。
「空文字」なんてものはありません''
。
スペース文字が必要な場合は、スペースとして表すことができます:c[i] = ' '
またはそれに相当する ASCII 8 進数: c[i] = '\040'
。NUL 文字が必要な場合は、c[i] = '\0'
.
値が存在しないという事実を表すには、次の 2 つの選択肢があります。
1) 範囲全体char
が意味を持ち、値を予約できない場合は、char*
代わりに次を使用しますchar
:
char** c = new char*[N];
c[0] = NULL; // no character
*c[1] = ' '; // ordinary character
*c[2] = 'a'; // ordinary character
*c[3] = '\0' // zero-code character
次にc[i] == NULL
、文字が存在しない場合*c[i]
と通常の文字の場合があります。
2) で表現可能な値が必要ない場合char
は、文字など、値が存在しないことを示すために予約します'\0'
。
char* c = new char[N];
c[0] = '\0'; // no character
c[1] = ' '; // ordinary character
c[2] = 'a'; // ordinary character
次にc[i] == '\0'
、文字が存在しない場合と通常の文字が存在しない場合があります。