• 締切済み

入力された文字列の中の数字を全てを削除するプログラム(C言語)

入力された文字列の中の数字を全てを削除するプログラム(C言語) 柴田望洋さんの「明解C言語入門編」という本の演習11-5に当たるこのプログラムの作り方がどうしてもわかりません。 なんとか書いてみましたが、実行してもうまくいきません。 どこが悪いのか自分でもわかりません。 誰か教えてくださいお願いします。 以下が僕が書いたコードです。 #include<stdio.h> void del_digit(char *str){ unsigned i=0; char *a; while(*(str+i)){ if(*(str+i)<0 || *(str+i)>9) *a++=*(str+i); i++; } printf("%s",a); } int main(){ char *str; scanf(" %s",str); del_digit(str); return 0; }

みんなの回答

回答No.4

a の領域が獲得されていないのはすでに指摘のとおりですが、もうひとつ。  このままでは a に文字列の終端が設定されていないので、a の領域が0クリアされていない場合はprintfの出力は後ろにゴミが連なったものになってしまいます。

回答No.3

No.2ですが、あと、数字判断のとこ *(str+i)<0 → *(str+i) < '0' 9もおんなじ。

回答No.2

mainのstrと、del_digitのaは、それぞれ、ポインタを確保しただけの状態なので、mallocなどで、領域を確保してください。

  • SaKaKashi
  • ベストアンサー率24% (755/3136)
回答No.1

>なんとか書いてみましたが、実行してもうまくいきません。 どのようにうまくいかないのですか? プログラムはあなたの作ったとおりに動きます。

hitoyo_tokikuu
質問者

補足

すみません。 コンパイル自体はちゃんとできたんですが、入力しても何も表示されません。数字以外の文字ですらです。 何回も見直しましたがどこが間違えているのかさっぱりです。

関連するQ&A