1

cに次のような文字配列があるとします。

char a[20];

インデックス20にアクセスして、このように終了NULLを配置できますか?

a[20]='\0';

しかし、私のアルゴでは。(「これは整数からchar配列へのコンバーターです」)これは、最後のインデックスがchar配列のサイズよりも小さい場合、たとえば、終了NULLを配置するために必要です。

私のintのサイズが4( "1421")の場合、インデックス0に「1」、インデックス1に「4」、インデックス2に「2」、インデックス3に「1」を配置する必要があります。

そして最後にインデックス4でNULLを終了します

index=4;
a[index]='\0';

同じコードを修正する別の方法、

if(index<20)  (Will increase one condition)
    a[index]='\0';

しかし、私はただ知りたいのですが……インデックス20に終端NULLを置くことが可能かどうか。

OK私はこれをみんなに感謝します-あなたの助けにとても感謝しています。

4

3 に答える 3

3

配列char a[20]には、インデックス0から19までの20文字のスペースがあります。書き込みa[20]は配列の外側に書き込みを行うため、予期しない結果になります。終了するNULL文字を含めて20文字に制限されています。20文字と終了NULLのスペースが必要な場合は、配列をとして宣言する必要がありますchar a[21];。また、宣言a[20]してもNULLはどこにも配置されません。

于 2013-02-24T08:37:24.690 に答える
1

char a[20]:20は、からの要素を持つことができることを意味します0-19。そして、19までしか使用しないと想定されています。20まで入力すると、エラーが発生します。

次のように変更します:

a[20+1] => a[21]これで、20を使用して置くことができます\0a[20]='\0'

@AnkeshKushwahのコード

int main()
{
char arr[4]="hell";  
printf("%c",arr[4]); // here you will see garabage. 
printf("%c",arr[5]); // here is the terminating character. after 4.
char arr[]="hell";   
printf("%c",arr[4]); // here you will see terminating character.Because hell will take 
                        0-3 and 4 contains \0 
getch();
}
于 2013-02-24T08:37:57.463 に答える
0

char配列をすべてゼロで初期化することを検討してください。char a[20] = { 0 };

そうすれば、いくつの文字を書いても(最大19文字)、常にnullで終了します。

于 2013-02-24T08:40:36.630 に答える