質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.53%

  • C

    3657questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

同じプログラムをコピーしたものが表示がおかしい

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 437

sanchu52

score 140

同じプログラムをコピーしたものが表示がおかしい
test7.c:28:22:warning: unknown conversion type character 'U' in format [-Wformat=]
のようなワーニング出て上手くいきません。このワーニングを直す方法がありますか。ほかにも同じ行で'!'、'$'、'k'、 'W'
test7.c:28:38: warning: format '%s' expects a matching 'char *' argument [-Wformat=]など出ています。この行は日本語を表示している箇所です。
printf( "ファイルがオープンできません\n" );の箇所です。

コード
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define MAXCNT 100
char dtfile[]  = "LACKNUM.DAT";
char dtfile2[] = "LACKNUM2.DAT";// 最高記録用のファイル 

typedef struct {        // 構造体の宣言
    int tm_year;        
    int tm_mon;      
    int tm_mday;        
    int tm_hour;        
    int tm_min;      
    int tm_sec; 
    double score;   
} SCORE_DATA;

double read_kakodata(int* count,double* score)
{
    FILE *fp;
    int i;

    SCORE_DATA stars[MAXCNT];  // 構造体配列の宣言

    if( (fp=fopen( dtfile, "rb" ))==NULL ){
        printf( "ファイルがオープンできません\n" );
        exit( 1 );
    }
    for( i = 0; i <MAXCNT; i++ ) {
        if( fscanf( fp, "%d %d %d %d %d %d %lf\n"              // 構造体配列への読み込み
        , &stars[i].tm_year,& stars[i].tm_mon, &stars[i].tm_mday, 
            &stars[i].tm_hour, &stars[i].tm_min,&stars[i].tm_sec,&stars[i].score ) != 7 ) break;
        (*count)++;
    }
    printf("count0:%d\n\n",*count);

    for(i = 0; i<*count; i++ ){
        printf( "%d年 %d月 %d日 %d時 %d分 %d秒 \n所要時間(score)は%.1f\n\n"              // 構造体配列への読み出し
            , stars[i].tm_year,stars[i].tm_mon,stars[i].tm_mday,
            stars[i].tm_hour,stars[i].tm_min,stars[i].tm_sec,stars[i].score);
    } 
    fclose(fp);
    return 0;
}
int main()
{
    int count=0;
    double score;

    read_kakodata(&count,&score);  

    printf("count3:%d\n\n", count);                         

    return 0;
}


実行結果 異常
C:\MinGW\users\chap09\kadai>test7
count0:13

2017$BG/(J 9$B7n(J 16$BF|(J 8$B;~(J 52$BJ,(J 18$BIC(J
$B=jMW;~4V(J(score)$B$O(J10.6

2015$BG/(J 12$B7n(J 7$BF|(J 19$B;~(J 59$BJ,(J 8$BIC(J
$B=jMW;~4V(J(score)$B$O(J8.0

2016$BG/(J 1$B7n(J 4$BF|(J 1$B;~(J 9$BJ,(J 11$BIC(J
$B=jMW;~4V(J(score)$B$O(J7.5

2016$BG/(J 1$B7n(J 4$BF|(J 19$B;~(J 16$BJ,(J 8$BIC(J
$B=jMW;~4V(J(score)$B$O(J9.0

2016$BG/(J 1$B7n(J 4$BF|(J 19$B;~(J 2$BJ,(J 44$BIC(J
$B=jMW;~4V(J(score)$B$O(J7.5

2016$BG/(J 1$B7n(J 4$BF|(J 22$B;~(J 31$BJ,(J 52$BIC(J
$B=jMW;~4V(J(score)$B$O(J9.3

2016$BG/(J 1$B7n(J 4$BF|(J 23$B;~(J 33$BJ,(J 50$BIC(J
$B=jMW;~4V(J(score)$B$O(J10.2

2016$BG/(J 1$B7n(J 31$BF|(J 21$B;~(J 9$BJ,(J 53$BIC(J
$B=jMW;~4V(J(score)$B$O(J7.0

2016$BG/(J 2$B7n(J 2$BF|(J 8$B;~(J 49$BJ,(J 9$BIC(J
$B=jMW;~4V(J(score)$B$O(J9.4

2016$BG/(J 2$B7n(J 27$BF|(J 12$B;~(J 45$BJ,(J 26$BIC(J
$B=jMW;~4V(J(score)$B$O(J13.0

2016$BG/(J 2$B7n(J 28$BF|(J 2$B;~(J 27$BJ,(J 20$BIC(J
$B=jMW;~4V(J(score)$B$O(J7.4

2016$BG/(J 5$B7n(J 2$BF|(J 16$B;~(J 43$BJ,(J 32$BIC(J
$B=jMW;~4V(J(score)$B$O(J6.3

2017$BG/(J 9$B7n(J 14$BF|(J 10$B;~(J 21$BJ,(J 18$BIC(J
$B=jMW;~4V(J(score)$B$O(J6.0

count3:13
C:\MinGW\users\chap09\kadai>

正常
C:\MinGW\users\chap09\kadai>gcc -I. -o test5 test5.c -Wall

C:\MinGW\users\chap09\kadai>test5
count0:13

2017年 9月 16日 8時 52分 18秒
所要時間(score)は10.6

2015年 12月 7日 19時 59分 8秒
所要時間(score)は8.0

2016年 1月 4日 1時 9分 11秒
所要時間(score)は7.5

2016年 1月 4日 19時 16分 8秒
所要時間(score)は9.0

2016年 1月 4日 19時 2分 44秒
所要時間(score)は7.5

2016年 1月 4日 22時 31分 52秒
所要時間(score)は9.3

2016年 1月 4日 23時 33分 50秒
所要時間(score)は10.2

2016年 1月 31日 21時 9分 53秒
所要時間(score)は7.0

2016年 2月 2日 8時 49分 9秒
所要時間(score)は9.4

2016年 2月 27日 12時 45分 26秒
所要時間(score)は13.0

2016年 2月 28日 2時 27分 20秒
所要時間(score)は7.4

2016年 5月 2日 16時 43分 32秒
所要時間(score)は6.3

2017年 9月 14日 10時 21分 18秒
所要時間(score)は6.0

count3:13


C:\MinGW\users\chap09\kadai>
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • t_obara

    2017/09/19 18:06

    「MingW 文字化け」でググってみてはいかがでしょう。

    キャンセル

回答 2

checkベストアンサー

0

おそらく文字コードが異なっています。 エディタが文字コードの種類を自動判定して適切な解釈をすることがあるので、見かけ上は同じプログラムかもしれませんが、コンパイラが要求する形式になっていないのだと思います。

言語仕様としては使える文字コードははっきり決められていないので、処理系の裁量なのです。

とりあえず大抵のテキストエディタでは保存するときに文字コードを選択できるのでそれで元と同じ文字コードを選択してみてください。

コンパイラの方でどうにかするのであれば、 GCC を使用しているようですので、もし GCC のビルド時に iconv を有効にしているのであれば -finput-charset=cp932 というようなオプションを付けてコンパイルすれば大丈夫でしょう。 (この例はソースコードの文字コードが cp932 の場合です。) また、プログラム中に埋め込まれる文字のコードは -fexec-charset オプションで指定できます。 ただ、 MinGW 版の GCC は iconv が有効になっていないかもしれません。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/09/20 10:39

    後でTeraPadを使って自分で打ち込んでみます。ありがとうございます。

    キャンセル

  • 2017/09/21 08:43

    ありがとうございました。文字コードがJISになっていました。Sifts_Jisにしてなおりました。

    キャンセル

0

test5.c と test7.c で同じ内容なのに test7.c の方はおかしくなるという事でしょうか?
test5.c と test7.c のファイルの文字コードが違ってると思うので比較確認してみてはどうでしょうか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/09/20 10:45

    はい、おっしゃる通りです。TeraPadにコピーしたので、それをまたコピーしているからだと思います。
    分割で関数を作って、後でリンクするつもりでいます。勉強することが多くてなかなか前に進んでいかないじょうたいです。回答くださりありがとうございます。金曜日、土曜にやろうと思っています。

    キャンセル

  • 2017/09/21 08:44

    ありがとうございました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.53%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    パイプとc言語

    前提・実現したいこと dateからパイプして、日付を他言語でターミナルに表示できるようにしたいです。フランス語とドイツ語で曜日と月が書いてあるファイルが存在しています(fr.tx

  • 解決済

    月別アーカイブを特定のカテゴリーのみにしたい

    前提・実現したいこと WordPressの中でアーカイブを作っています。 アコーディオン形式で年をクリックするとスライドダウンして、その年の投稿のある月と件数が表示される仕様で

  • 解決済

    配列

    n個のデータを配列に読み込み、平均と分散を求めるプログラムを作成して、下記のデータで試せ、という問題です。 {3.9,10.4,9.5,7.5,2.8,4.8,2.9,8.1,3

  • 解決済

    テキストをテキストボックスで表示させたい

    カレンダーの日付をクリックすると、以下のリンクが出るようにしました。 A href="http://hoge.com/form.cgi?year=2017&mon=3&day=1

  • 解決済

    サブクエリを用いてユーザー数の累積合計を求めたい

    前提・実現したいこと MySQLユーザー数の累積合計を求めたいです。 発生している問題・エラーメッセージ Table 'database_name.e' doesn't 

  • 受付中

    プログラムを見やすく改良したい

    正常に動くプルグラムを見やすく改良したい。 具体的に教えていただければありがたいです。セグメンテーションフォルトでベスト7まで表示して停止します。173行あたりだと思うのですが、よ

  • 解決済

    2つの同じようなコードを簡素化したい

    2つの同じような関数のコードを簡素化できますか?比較用の関数 cmp3 と比較用の関数 cmpは似ているんですが、 まとめられますか。 関数get_dataと関数get_data2

  • 解決済

    C言語 2次元配列のポインタについt

    コード //多次元配列でのポインタ利用 #include <stdio.h> #define row 3 //行 #define col 2 //列 // 56 60 //54

同じタグがついた質問を見る

  • C

    3657questions

    C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。