-1

さて、私は奇妙な問題を抱えていprintf()ます。画面にゴミを出力しています。記憶と関係があるようです。見てください:

char string1[] = "SAMPLE STRING";
char string2[20]; // some garbage in it

/* let's clear this madness*/
int i = 0;
for (i; i < 20; i++) string2[i] = ' ';   // Space, why not.

printf("output: %s", string2);

出力

output:      ╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠╠SAMPLE STRING
// ten spaces and random characters, why?
4

2 に答える 2

8

C 文字列は NUL で終了する必要があるためです。これは、文字列の最後の文字が である必要があることを意味します'\0'。これは、printf(および他のすべての C 文字列関数が) 文字列がいつ終了したかを知る方法です。

于 2012-11-26T15:33:05.067 に答える
2

string2null 文字で仕上げる'\0'

string2[19] = '\0';

または、次の方法で実行できます。

for (i; i < 19; i++) string2[i] = ' ';
string2[i] = '\0'; // after the end of the loop i= 19 here
于 2012-11-26T15:32:34.520 に答える