ページ 11

ファイルのことで教えてください

Posted: 2013年7月24日(水) 23:25
by j-back
http://masudahp.web.fc2.com/cl/ren1/cren8.html
の問題8-12の解答が↓になるんですが、char nam[256];と宣言しているのはなぜですか?

コード:

#include <stdio.h>
#include <stdlib.h>
int main(void)
{
        FILE *fp1;
        char nam[256];
        int jj;
        float mm;

        if((fp1 = fopen("jinkou.txt", "r")) == NULL){
                printf("ファイルがオープンできません\n");
                exit(1);
        }

        while(fscanf(fp1, "%s", nam) != -1){
                fscanf(fp1, "%d", &jj);
                fscanf(fp1, "%f", &mm);
                printf("%10s%10d人%10.2fKm2\n", nam, jj, mm);
        }

        fclose(fp1);
        return;
}

Re: ファイルのことで教えてください

Posted: 2013年7月25日(木) 09:33
by usao
256という値じゃないとダメとかいうことではなく
単に,「データファイルから読み込む文字列の長さを格納するのに十分な長さの配列を用意する」
程度の意味しかないでしょう.
つまり,
 ファイルから読み込む都道府県名項目の長さ << 256
という想定をしている,というだけのことだと思います.
(もしこの部分が問題にて穴埋め箇所になっているとしたら,問題文にてその旨を規定すべきでしょうが,
 今回は穴埋め部分ではないから特筆しなかったのでしょう)

Re: ファイルのことで教えてください

Posted: 2013年7月29日(月) 17:15
by j-back
ありがとうございます。
あと、このプログラムは実行すると愛知県~和歌山県とテキストに書かれている順に表示していますが、これをランダムに表示するようにしたいです。
乱数を使おうとおもっているのですが、乱数以外に必要な知識はありますか?

Re: ファイルのことで教えてください

Posted: 2013年7月29日(月) 17:36
by softya(ソフト屋)
j-back さんが書きました:ありがとうございます。
あと、このプログラムは実行すると愛知県~和歌山県とテキストに書かれている順に表示していますが、これをランダムに表示するようにしたいです。
乱数を使おうとおもっているのですが、乱数以外に必要な知識はありますか?
実際に組んでみないと実感がわかないと思うので、まず挑戦してみて下さい。
その上で疑問が出てきたら質問して下さい。