アプリ版:「スタンプのみでお礼する」機能のリリースについて

入力された文字列の中の数字を全てを削除するプログラム(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;
}

A 回答 (4件)

a の領域が獲得されていないのはすでに指摘のとおりですが、もうひとつ。



 このままでは a に文字列の終端が設定されていないので、a の領域が0クリアされていない場合はprintfの出力は後ろにゴミが連なったものになってしまいます。
    • good
    • 0

No.2ですが、あと、数字判断のとこ


*(str+i)<0 → *(str+i) < '0'
9もおんなじ。
    • good
    • 0

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

    • good
    • 0

>なんとか書いてみましたが、実行してもうまくいきません。


どのようにうまくいかないのですか?
プログラムはあなたの作ったとおりに動きます。

この回答への補足

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

補足日時:2010/10/26 23:44
    • good
    • 0

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