数字が何回打たれたか数えるプログラム

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
ちひろ。

数字が何回打たれたか数えるプログラム

#1

投稿記事 by ちひろ。 » 11年前

数字が何回打たれたか数えるプログラムをCで書いたのですが、
なぜかscanfのところで、文字入力後にThread 1:EXC_BAD_ACCESS(code-1,address-0)というエラーが
出てしまいます。(実行環境はxcode)
どなたか原因を教えてください。。
よろしくお願いいたします!!

コード:

#include <iostream>
#include <ctype.h>

int main()
{
    char* inputs; // 入力された文字のアドレス
    int i;
    int counts[10]; // 0~9の数字が何回打たれたか
    
    scanf("%s", inputs);
    
    // countsの初期化
    for (i = 0; i < 10; i++) {
        counts[i] = 0;
    }
    
    // 入力された数字のカウント
    for (i = 0; i < strlen(inputs); i++) {
        if (isdigit(inputs[i])) {
            counts[(int)inputs[i]]++;
        }
    }
    
    // 結果の表示
    for (i = 0; i < 10; i++) {
        printf("%d : %d回\n", i, counts[i]);
    }
}

アバター
usao
記事: 1889
登録日時: 12年前
連絡を取る:

Re: 数字が何回打たれたか数えるプログラム

#2

投稿記事 by usao » 11年前

コード:

char *inputs; //未初期化.どんな値になってるか不定.
scanf( "%s", inputs );  //inputsが指す場所に,入力されてくる文字列を書き込め,と…
あと,20行目も問題起こすかと.

ちひろ。

Re: 数字が何回打たれたか数えるプログラム

#3

投稿記事 by ちひろ。 » 11年前

どう直せばいいでしょうか、、?
また、20行目はなんで問題なのですか??

アバター
usao
記事: 1889
登録日時: 12年前
連絡を取る:

Re: 数字が何回打たれたか数えるプログラム

#4

投稿記事 by usao » 11年前

>どう直せばいいでしょうか、、?

えー…
「scanf()で文字列を読み込んでどうの」的なのは
Cの入門的な練習問題によくあるタイプだと思うので,少し復習されてみては?


>また、20行目はなんで問題なのですか??

コード,ご自身で理解して書いてますか?

コード:

char c = '0';
int i = (int)c;  //iの値はいくつになるのでしょうか?

ちひろ。

Re: 数字が何回打たれたか数えるプログラム

#5

投稿記事 by ちひろ。 » 11年前

あー、普段Rubyやってるんで普通にキャストされないこと忘れてました笑

scanfに問題があるとは思えないのですが?
なぜなら、if isdigitのブロックの処理を、単純にそのinputsの出力にして実行させると普通に動作しますから。

アバター
みけCAT
記事: 6734
登録日時: 14年前
住所: 千葉県
連絡を取る:

Re: 数字が何回打たれたか数えるプログラム

#6

投稿記事 by みけCAT » 11年前

ちひろ。 さんが書きました:scanfに問題があるとは思えないのですが?
確かに、ライブラリのscanfの実装の不都合ではなく、使い方が間違っているせいだと思います。
ちひろ。 さんが書きました:if isdigitのブロックの処理を、単純にそのinputsの出力にして実行させると普通に動作しますから。

どういうことかよくわからないので、そのコードを貼っていただけますか?

オフトピック
scanfが使えないなら、fgetsを使えばいいじゃない。(バッファの確保は必要だけど)
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

ちひろ。

Re: 数字が何回打たれたか数えるプログラム

#7

投稿記事 by ちひろ。 » 11年前

すいません。自己解決しました!ありがとうございます!!

閉鎖

“C言語何でも質問掲示板” へ戻る