105

現在、小さなプログラムを書いていますが、コンパイル時にこのエラーが発生し続けます

エラー: 空の文字定数

有効な文字を空のスペースに置き換えようとしていることが原因であることに気付きましたc[i]=''が、それを表す別の方法を見つけることができませんでした。

4

10 に答える 10

165

c[i]= '\0'またはを使用できますc[i] = (char) 0

null/空の文字は単にゼロの値ですが、ゼロをエスケープした文字として表すこともできます。

于 2013-08-23T19:14:01.153 に答える
35

文字に「文字なし」を格納することはできません-意味がありません。

別の方法として、null char などの特別な意味を持つ文字を格納し、'\0'これを特別に扱うこともできます。

于 2013-08-23T19:16:00.157 に答える
15

空のスペース char は' '. null を探している場合、それは'\0'.

于 2013-08-23T19:14:11.510 に答える
10

はい、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です。

于 2013-08-23T19:15:01.000 に答える
5

「空文字」なんてものはありません''

スペース文字が必要な場合は、スペースとして表すことができます:c[i] = ' 'またはそれに相当する ASCII 8 進数: c[i] = '\040'。NUL 文字が必要な場合は、c[i] = '\0'.

于 2013-08-23T19:19:32.093 に答える
4

値が存在しないという事実を表すには、次の 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'、文字が存在しない場合と通常の文字が存在しない場合があります。

于 2013-08-23T19:16:15.863 に答える