ページ 11

初心者です.エラーが出て困ってます

Posted: 2013年7月03日(水) 18:25
by がくせい
このコードをコンパイルすると以下のエラーがでてしまいます.エラーメッセージを解読してもわからないのでどなたかよろしくお願いします.
このコードはscan_uintで3桁の非負の数を読み取ってmake_intで適当な数を作ってその数を9で割った余りによって表示をかえるというものです.

report_fortune.c: In function ‘main’:
report_fortune.c:41: error: expected ‘)’ before ‘!’ token
report_fortune.c:41:28: warning: missing terminating ' character
report_fortune.c:41: error: missing terminating ' character
report_fortune.c:42: error: expected ‘;’ before ‘}’ token

コード:

#include<stdio.h>
int scan_uint(void)
{
        int tmp;
        do{
                printf("3桁の非負の整数を入力してください:");
                scanf("%d",&tmp);
                if(tmp<100 || tmp>999)
                        puts("3桁で非負の整数にしてください.");
        }while(tmp<100 || tmp>999);
        return(tmp);
}

int make_int(int num)
{
        int tmp=0;
        if(num>0){
                do{
                        tmp=tmp*10+num%10;
                        num/=10;
                }while(num>0);
        }
        int saika=tmp/100;
        int saijo=tmp%10;
        tmp=tmp*saika+saijo*3;
        return(tmp);
}

int main(void)
{
        int nx=scan_uint();
        switch(make_int(nx)%9){
                case 0:puts("A"); break;
                case 1:
                case 2:puts("B"); break;
                case 3:
                case 4:
                case 5:puts("C"); break;
                case 6:
                case 7:puts("D"); break;
                case 8:puts("E"); break;
        }
        return(0);
}

Re: 初心者です.エラーが出て困ってます

Posted: 2013年7月03日(水) 18:50
by softya(ソフト屋)
このソースコードでは、その様なエラーは出ないと思います。
ソースコードを間違えていませんか?

Re: 初心者です.エラーが出て困ってます

Posted: 2013年7月03日(水) 19:08
by がくせい
softya(ソフト屋) さんが書きました:このソースコードでは、その様なエラーは出ないと思います。
ソースコードを間違えていませんか?
すいませんputs関数のところは本来は文章でした.
そこで,その文章のところをこのソースのようにA,B,C・・・に変えてコンパイルしたところ通りました.
しかし,実行してみると日本語のところがすべて文字化けしてしまいました.ソース自体は間違っていないようですが,どうやらputs関数の中身がまたは日本語入力がおかしくなっていたものと思われます.

当方はmacのターミナル上でvimを使ってこのソースを書きました.そこで質問はかわりますが,この原因,また解決方法をご存知の方はどうか教えていただきたいと思います.

Re: 初心者です.エラーが出て困ってます

Posted: 2013年7月03日(水) 20:04
by softya(ソフト屋)
Macの問題だと思いますが、ターミナルでの日本語がどうなのかは私はよく存じません。
WindowsとLinuxなら何とか成るのですが、Macが無いので試せなくて申し訳ありません。

Re: 初心者です.エラーが出て困ってます

Posted: 2013年7月03日(水) 20:08
by KORYUOH
エラー文を読んだ感じだけで言うと
問題があるのは41行目に表示しようとしていた文字列ではないかと思います。

Re: 初心者です.エラーが出て困ってます

Posted: 2013年7月03日(水) 20:10
by がくせい
いえいえ.ソースは間違ってないということがわかっただけで十分です.
返信の方ありがとうございました.

Re: 初心者です.エラーが出て困ってます

Posted: 2013年7月03日(水) 20:15
by がくせい
KORYUOH さんが書きました:エラー文を読んだ感じだけで言うと
問題があるのは41行目に表示しようとしていた文字列ではないかと思います。
他の文字列と大差ないのですがね・・・.
問題はmac側の文字入力の環境設定かbashファイルということがわかったのでとりあえずは大丈夫です
返信ありがとうございました.