ページ 11

2次元配列に対するファイルからのデータ格納について

Posted: 2012年4月21日(土) 04:27
by se-
1行に1個の数値データ、計MxN個のデータが記載されたテキストファイルからMxN行の多次元配列に数値データを格納する(M,Nは任意)プログラムを作りたいのですが参考になるソースやご意見など頂けたら幸いです。
txtファイルの形式は
///////////////////
10
11
12

///////////////////
こんな感じで数値の羅列が続きます

Re: 2次元配列に対するファイルからのデータ格納について

Posted: 2012年4月21日(土) 06:32
by beatle
フォーラムルールはご覧になりましたでしょうか。
se-さんの質問は丸投げですので、この掲示板では禁止されています。
se-さんが分かる範囲で、ソースコードなりを提示してください。

ヒント:
fopenやscanfはご存知ですか。
文字列"10"から整数10に変換するやり方はご存知ですか。

Re: 2次元配列に対するファイルからのデータ格納について

Posted: 2012年4月21日(土) 17:41
by se-
beatle さんが書きました:フォーラムルールはご覧になりましたでしょうか。
se-さんの質問は丸投げですので、この掲示板では禁止されています。
se-さんが分かる範囲で、ソースコードなりを提示してください。

ヒント:
fopenやscanfはご存知ですか。
文字列"10"から整数10に変換するやり方はご存知ですか。
失礼しました。とりあえず一次元配列ではこのように取り込んでみました。多次元配列への取り込み方法をご教授頂ければありがたいです

code
/*
ファイルは1行1データの整数が書かれている。
これを読み込んで1次元整数配列に格納する。
データの個数は不明、とします。楽にやるには
以下の方法があります。
インクルードを補い、バグ1個を見つけてください。
末尾の出力イメージはバグを入れる前の実行結果です。
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int_main(){
__char__fnam[256];
__FILE__*fi;
__char__bff[256];
__int___nky=0;
__int___*key,ky;

__printf("ファイル名:");_scanf("%s",fnam);
__if((fi=fopen(fnam,"r"))==NULL)_{
____printf("%s_が開けません。\n",fnam);_return_1;
__}
__while(fgets(bff,256,fi)!=NULL)_nky++;
__printf("%d_records_found_in_%s\n",nky,fnam);
__key_=_(int*)malloc(sizeof(int)*nky);
__rewind(_fnam_);
__ky=0;
__while(fgets(bff,256,fi)!=NULL)_{
____key[ky++]_=_atoi(strtok(bff,"_\n"));
__}
__printf("%d_data_are_in_the_table_key[%d].\n",nky,nky);
__for(ky=0;ky<nky;ky++)_printf("%d\n",
/code

Re: 2次元配列に対するファイルからのデータ格納について

Posted: 2012年4月21日(土) 17:53
by beatle
やりたいのは多次元配列というか2次元配列ですね?
MとNが任意とありますが、C言語で多次元配列を生成するには、あらかじめMとNが分かっていると便利です。
しかし、MとNはファイルには直接には記載されていないということでよろしいでしょうか。

とすると、ファイルのデータの個数からMとNを自動で判別するということになりますね。
データの個数の取得は既に実装できているみたいですから、後はnky == M * NとなるようなMとNの組を計算すればいいですね。
一般には複数の解になりますから、どういう基準でMとNを決めるかを考えないといけないでしょうね。

そもそも、2次元配列の定義方法、値の代入方法などはご存知なのでしょうか。

Re: 2次元配列に対するファイルからのデータ格納について

Posted: 2012年4月21日(土) 17:56
by softya(ソフト屋)
codeタグの使い方が間違っていますのでフォーラムルールを再確認して投稿前にプレビューで必ず確認して下さい。
それと空白を_などに置き換える必要性はありません。