文字列から空白を削除するカスタムコードを作成しました。しかし、私はそれを実行したとき、入力がなければ、2番目の文字列は3つのガベージ値を与え、余りにも多くのスペースがあると、コードは時には独自のスペース文字列を追加します。ごみ、その後、私はちょうど3つのゴミ値は:(ガベージ値のソースを見つける
#define SIZE 200
int main()
{
int w=0, z=0, x=0, y=0, z0, rDlength=0, Dlength=0, RandomChar, Dx=0, Dy=0;
char rstring[SIZE], string[SIZE];
srand(time(NULL));
//debug
int space=0;
printf("Input Text: ");
gets(rstring);
strupr(rstring);
strlen(rstring);
rDlength=strlen(rstring);
//debug
printf("%d\n", rDlength);
w=-1;
for(z=0;z<=rDlength;z++)
{ if(rstring[z]==' ')
{ space++;
continue;
}
else if(rstring[z]=='\0')
break;
else if(rstring[z]!=' ')
string[++w]=rstring[z];
}
//debug
printf("%d\n", space);
Dlength=strlen(string);
for(z=0;z<rDlength;z++)
printf("%c", rstring[z]);
printf("\n");
for(z=0;z<Dlength;z++)
printf("%c", string[z]);
printf("\n");
printf("String length is %d\n", Dlength);
return 0;
}
どこから来た少なくとも3つの入力文字がある場合、その後、ガベージ値が消えるように見える見つけることができません。しかし、2つまたは1文字があるかどう値が表示されます。
コードを読むことができません。適切に書式設定してインデントしてください。フォーマットをあまりに創造的にしないでください。 – Olaf
charをcharでコピーしている配列を 'string'で終了していません。だから 'Dlength = strlen(string);'は正しい答えを出しません。 –
ああ、申し訳ありませんオラフ、私はこのサイトではとても新しいです。もし私が聞くことができるなら、インデントとフォーマットの意味はどうですか? –