好きなおでんの具材ドラフト会議しましょう

文字列を入力し、文字列中のアルファベット小文字を取り除いて表示するプログラムだと思いますが、str[j++]の意味がよくわかりません。
教えてください。

char str[100];
int i, j;

scanf( "%s", str );

for( i = 0, j = 0 ; str[i] != 0 ; i++ )
{
if( ! ( 'a' <= str[i] && str[i] <= 'z' ) )
str[j++] = str[i];
}

str[j] = 0;

printf( "%s", str );

A 回答 (2件)

>str[j++] = str[i];



str[j] = str[i];
j = j + 1;

と同じだけど、これでわかりますか?
小文字じゃない時だけ文字のコピーして
コピー先のインデックスを進めてるだけ。
小文字を取り除いて前へ詰めてゆく
処理してます。
    • good
    • 1

イクリメント演算子と言います



例えば上の例で言うと、スタート時点でj=0ですね

if文の判定結果でTRUE時にstr文字列変数に代入します jの位置に(スタート直後はゼロ)

でインクリメント演算子は処理の実行後に変数値を加算します

インクリメント演算子には、[++]と[--]の2種類あり
[--]なら減算を行う
更には、変数の前に置くパターンもあり
(例えば、 ++j のようなケース)
この場合は、代入する処理の前に値を加算する

と言ったような色々な使い方が可能です

まずは、インクリメント演算子で調べて見よう
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報