【掲示板ご利用上の注意】

 ※題名は具体的に!
 ※学校の課題の丸投げ禁止!
 ※ソースの添付は「HTML変換ツール」で字下げ!
 ※返信の引用は最小限に!
 ※環境(OSとコンパイラ)や症状は具体的に詳しく!
 ※マルチポスト(多重投稿)は慎んで!

 詳しくはこちら



 本当はこんなに大きく書きたくはないのですが、なかなか守っていただけなくて…。
 守ってくださいね。お願いします。(by管理人)

C言語ソース⇒HTML形式ツール   掲示板2こちら


管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧

No.20673

ファイルを2次元行列に格納
投稿者---お願いします(2005/04/19 18:22:39)


C言語です。
あるファイル、例えば

2 6 -7 0 0 6 48
4 5 3 -1 0 8 12
9 0 -7 5 1 9 -2

があった場合これらを2次元配列に格納するには
どうすればいいのでしょうか?
さらにファイル内は何行何列かも表示したいです。


この投稿にコメントする

削除パスワード

発言に関する情報 題名 投稿番号 投稿者名 投稿日時
<子記事> Re:ファイルを2次元行列に格納 20674 Blue 2005/04/19 18:59:02
<子記事> Re:ファイルを2次元行列に格納 20675 まきじ 2005/04/19 19:24:39
<子記事> Re:ファイルを2次元行列に格納 20676 RiSK 2005/04/19 22:02:48


No.20674

Re:ファイルを2次元行列に格納
投稿者---Blue(2005/04/19 18:59:02)


現在あなたはどこまでできるのでしょうか?
できているところまででいいのでソースを載せてください。
それから、具体的にどこがわからないかを質問してください。
# 努力していますという証拠が必要! とでもいうのでしょうかw

このままでは"問題の丸投げで"で物好きな方でしか協力してくれませんよ。

最後に投稿前には掲示板ご利用上の注意をよんでください。



この投稿にコメントする

削除パスワード

No.20675

Re:ファイルを2次元行列に格納
投稿者---まきじ(2005/04/19 19:24:39)


>2 6 -7 0 0 6 48
>4 5 3 -1 0 8 12
>9 0 -7 5 1 9 -2
>
>があった場合これらを2次元配列に格納するには
>どうすればいいのでしょうか?

fscanf を使ってみてはどうでしょうか。


この投稿にコメントする

削除パスワード

No.20677

Re:ファイルを2次元行列に格納
投稿者---お願いします(2005/04/19 22:12:44)


&gt;fscanf を使ってみてはどうでしょうか。

ファイルのプログラムは苦手なんでわからないんですが
fscanfの使い方がわかりません。

#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;

int main(int argc,char *argv[])
{
FILE *fp;
char a[256];
int i,k;
double ma[10][10]={0};

x=0;y=0;

if((fp=fopen(&quot;data.txt&quot;,&quot;r&quot;))==NULL)
printf(&quot;ファイルをオープンできません。\n&quot;);
else{
while(fscanf(fp,&quot;%lf&quot;,&amp;ma)){

まだ途中なんですがfscanfはこの使い方でma[][]に入ってくれるんですか?



この投稿にコメントする

削除パスワード

No.20685

Re:ファイルを2次元行列に格納
投稿者---nop(2005/04/20 09:25:09)


>ファイルのプログラムは苦手なんでわからないんですが
>fscanfの使い方がわかりません。

苦手である事と、「fscanfの使い方がわからない」のは別問題でしょう。
私には、理解する気もない様に感じます。
わからないなら、まず使い方を調べて下さい。


# ちなみに、最低限必要と思われる関数位は挙げておきます。
# 何をどう使えば目的を達成できるか?は、
# 各関数の使い方を調べて、ご自分で考えて下さい。
#
# fgets()、strtok()、malloc() or calloc()


この投稿にコメントする

削除パスワード

No.20690

Re:ファイルを2次元行列に格納
投稿者---お願いします(2005/04/20 12:50:42)


>苦手である事と、「fscanfの使い方がわからない」のは別問題でしょう。
>私には、理解する気もない様に感じます。
>わからないなら、まず使い方を調べて下さい。

わからないだけです。理解する気はあります。
わからない理由としてはファイルを考える場合に
' ''\n''\0'を考えなければならないからです。
このプログラムはあるプログラムの1割くらいの部分です。
残り9割は作り終えました。理解する気のない人では
作れないプログラムです。


この投稿にコメントする

削除パスワード

No.20692

Re:ファイルを2次元行列に格納
投稿者---…(2005/04/20 13:11:13)


>わからないだけです。理解する気はあります。

でも自分で調べる気はなくて、あくまで教えてもらえれば〜ということですか。

>わからない理由としてはファイルを考える場合に
>' ''\n''\0'を考えなければならないからです。

動作を調べて、実際に試せばいいと思う。試行錯誤の中で人間は学習するのです。


>残り9割は作り終えました。理解する気のない人では
>作れないプログラムです。

そうですか。
ではその9割を理解した時と同じように学習していけばよいと思います。


この投稿にコメントする

削除パスワード

No.20694

Re:ファイルを2次元行列に格納
投稿者---REE(2005/04/20 13:14:36)


>わからないだけです。理解する気はあります。
>わからない理由としてはファイルを考える場合に
>' ''\n''\0'を考えなければならないからです。

それを考えなければならないと思っているのであれば、考えるようにすればいいだけでは?

>このプログラムはあるプログラムの1割くらいの部分です。
>残り9割は作り終えました。理解する気のない人では
>作れないプログラムです。

他の部分を理解出来ていることと、fscanfを理解しようとしているかどうかとは無関係です。

ところでscanfやsscanfの使い方は分かりますか?


この投稿にコメントする

削除パスワード

No.20676

Re:ファイルを2次元行列に格納
投稿者---RiSK(2005/04/19 22:02:48)


>あるファイル、例えば
>
>2 6 -7 0 0 6 48
>4 5 3 -1 0 8 12
>9 0 -7 5 1 9 -2
>
>があった場合これらを2次元配列に格納するには
>どうすればいいのでしょうか?
>さらにファイル内は何行何列かも表示したいです。
#include <stdio.h>
#define COL 7
#define ROW 3
int main(void)
{
    FILE * f;
    int data[ROW][COL], i, j, is_error = 0;
    if ((f = fopen("data.txt", "r")) == NULL) return 1;
    for (i = 0; !is_error && i < ROW; ++i)
        for (j = 0; !is_error && j < COL; ++j)
            if (fscanf(f, "%d", &data[i][j]) != 1) is_error = 1;
    fclose(f);
    if (is_error) return 1;
    printf("%d行%d列\n", ROW, COL);
    return 0;
}




この投稿にコメントする

削除パスワード

No.20678

Re:ファイルを2次元行列に格納
投稿者---お願いします(2005/04/19 22:25:24)


ありがとうございます。
でも何行何列かはわからないプログラムを開かないとわからないですから
#define で定義しないでファイルから読み込みたいんですが、
どうすればいいですかね?

#include <stdio.h>
#define COL 7
#define ROW 3
int main(void)
{
FILE * f;
int data[ROW][COL], i, j, is_error = 0;
if ((f = fopen("data.txt", "r")) == NULL) return 1;
for (i = 0; !is_error && i < ROW; ++i)
for (j = 0; !is_error && j < COL; ++j)
if (fscanf(f, "%d", &data[i][j]) != 1) is_error = 1;
fclose(f);
if (is_error) return 1;
printf("%d行%d列\n", ROW, COL);
return 0;
}</pre>




この投稿にコメントする

削除パスワード

No.20680

Re:ファイルを2次元行列に格納
投稿者---RiSK(2005/04/19 22:40:58)


>でも何行何列かはわからないプログラムを開かないとわからないですから

はぁ? そんなこと最初に言ってくださいよ。
それに,まだ曖昧です。
行が変わったときに列数は変わる可能性はあるのですか?
ex.
1 2 3
10
100 400 500 400

>#define で定義しないでファイルから読み込みたいんですが、
>どうすればいいですかね?

動的にメモリを確保してください。
mallocなどを調べてください。

※返信の引用は最小限に!


この投稿にコメントする

削除パスワード

No.20681

Re:ファイルを2次元行列に格納
投稿者---お願いします(2005/04/19 22:46:55)


>行が変わったときに列数は変わる可能性はあるのですか?
申し訳ございません。行が変わったとき列数は変わりません。
本当申し訳ないです。


この投稿にコメントする

削除パスワード

No.20714

Re:ファイルを2次元行列に格納
投稿者---RiSK(2005/04/21 09:12:39)


>>行が変わったときに列数は変わる可能性はあるのですか?
>申し訳ございません。行が変わったとき列数は変わりません。
>本当申し訳ないです。

人のソースを勝手に2chに貼り付けるなよ。
# 恥ずかしいじゃないかw

ってか,著作権違反です。
良識が疑われますよ。

ってか宿題丸投げだったのね。


この投稿にコメントする

削除パスワード

No.20716

Re:ファイルを2次元行列に格納
投稿者---επιστημη(2005/04/21 09:46:15)


>ってか宿題丸投げだったのね。

だったの? じゃ、

> このプログラムはあるプログラムの1割くらいの部分です。
> 残り9割は作り終えました。理解する気のない人では
> 作れないプログラムです。

これはどゆことなのかしらん?



この投稿にコメントする

削除パスワード

No.20686

Re:ファイルを2次元行列に格納
投稿者---επιστημη(2005/04/20 09:45:14)


>ありがとうございます。
>でも何行何列かはわからないプログラムを開かないとわからないですから
>#define で定義しないでファイルから読み込みたいんですが、
>どうすればいいですかね?

ファイルを二度読む。
一度目で行数/列数を調べ、それに応じて配列を確保。
んでもって二度目でマジに読む。

# 二次元配列の領域確保はちょびっと面倒



この投稿にコメントする

削除パスワード

管理者用メニュー    ツリーに戻る    携帯用URL    ホームページ    ログ    タグ一覧