int i=0,j=0;
char string[100], string2[100];
scanf("%s",&string);
while (string[i]!='\0'){
if(string[i]=='a' || string[i]=='e' || string[i]=='i' || string[i]=='o' || string[i]=='u' || string[i]=='A' || string[i]=='E' || string[i]=='I' || string[i]=='O' || string[i]=='U'){
string[i]=string2[j];
}
string[i] = tolower(string[i]);
string[i] = string2[j];
string2[j-1]='.';
}
printf("%s", string2);
return 0;
問題は単語を入力して母音をすべて削除し、「。」を追加しています。すべての大文字を小文字にする。 string
以来Cプログラムの空白の出力に問題があります
「i」が増分されないため、プログラムは終了しません。 - 問題を見つけるために*デバッガー*を使うのはどうですか? –
...そして 'string2 [j-1] = '。';最初の保存時に'; 'は' j'が '0'で結果のインデックスが' -1'なので未定義の動作を呼び出します。また、charを保存していても、 'j'をインクリメントすることはありません。 'string2 [j]'は一度もなかったので、 'string [i] = string2 [j];'は他のものより推測に似ています。これは直前の行で* indeterminate *初期化されました。短い答え:推測をやめ、あなたのマテリアルをもう一度見直してください。 – WhozCraig
'string2'には何がありますか?そしてなぜ 'string [i] = tolower(string [i]);の後に' string [i] 'を直ちに上書きしますか? –