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

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

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

#1

投稿記事 by がくせい » 6年前

このコードをコンパイルすると以下のエラーがでてしまいます.エラーメッセージを解読してもわからないのでどなたかよろしくお願いします.
このコードは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);
}

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 9年前
住所: 東海地方
連絡を取る:

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

#2

投稿記事 by softya(ソフト屋) » 6年前

このソースコードでは、その様なエラーは出ないと思います。
ソースコードを間違えていませんか?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

がくせい

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

#3

投稿記事 by がくせい » 6年前

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

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

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 9年前
住所: 東海地方
連絡を取る:

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

#4

投稿記事 by softya(ソフト屋) » 6年前

Macの問題だと思いますが、ターミナルでの日本語がどうなのかは私はよく存じません。
WindowsとLinuxなら何とか成るのですが、Macが無いので試せなくて申し訳ありません。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

KORYUOH
記事: 44
登録日時: 7年前

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

#5

投稿記事 by KORYUOH » 6年前

エラー文を読んだ感じだけで言うと
問題があるのは41行目に表示しようとしていた文字列ではないかと思います。
C言語を使うと自分の足を誤って撃ち抜いてしまうことがある。 C++を使えばそのような間違いを犯しにくくなる。しかし、やってしまったときには足全体が無くなる。

がくせい

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

#6

投稿記事 by がくせい » 6年前

いえいえ.ソースは間違ってないということがわかっただけで十分です.
返信の方ありがとうございました.

がくせい

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

#7

投稿記事 by がくせい » 6年前

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

閉鎖

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