ファイルからデータを読み込み2次元配列に格納
Posted: 2012年4月25日(水) 23:12
C++の超初心者です。
"fname"というデータファイルにある6つの数値データを読み込んで2次元の配列に格納するプログラム"test"を作成したいです。
"fname" の中身は、以下のようになっています。各数値の後にコンマ","をつけてありますが、ついていないデータの読み込みでも結構です。ただ、できればデータは2列のものを読み込みたいと思っています。
1, 7,
2, 8,
3, 9,
格納させるプログラム"test"を以下のように作成してみました。
#include <iomanip>
#include <fstream>
#include <cstdio>
#define NO1 3
#define NO2 2
using namespace std;
int main()
{
FILE *ifs;
int a,b,i,j,map[NO1][NO2];
char fname[32],ch;
ifs=fopen(fname,"r");
if (!ifs) {
cerr << "File not open" << endl;
return -1;
}
for(i=0; i<NO1; i++)
{
for(j=0; j<NO2; j++)
{
do{ch=(getc(ifs));}
while(ch==','||ch=='\n'||ch=='\r');
map[j] = ch - '0';
cout << "map[" << i << "][" << j << "]= " << map[j]
<< endl;
}
}
cout << "\n" << endl;
return 0;
}
-------------------------------------------------------------
上記のプログラムで、
map[0][0]=1
map[0][1]=7
map[1][0]=2
map[1][1]=8
map[2][0]=3
map[2][1]=9
という風に格納にしたいです。
しかし、このプログラムをコンパイルすると、"File not open"と出てきます。つまり、ファイルがうまく格納されていません。
どなたかわかる方がいらっしゃれば、具体的にどのような形にすればよいか、ご指導願います。
"fname"というデータファイルにある6つの数値データを読み込んで2次元の配列に格納するプログラム"test"を作成したいです。
"fname" の中身は、以下のようになっています。各数値の後にコンマ","をつけてありますが、ついていないデータの読み込みでも結構です。ただ、できればデータは2列のものを読み込みたいと思っています。
1, 7,
2, 8,
3, 9,
格納させるプログラム"test"を以下のように作成してみました。
#include <iomanip>
#include <fstream>
#include <cstdio>
#define NO1 3
#define NO2 2
using namespace std;
int main()
{
FILE *ifs;
int a,b,i,j,map[NO1][NO2];
char fname[32],ch;
ifs=fopen(fname,"r");
if (!ifs) {
cerr << "File not open" << endl;
return -1;
}
for(i=0; i<NO1; i++)
{
for(j=0; j<NO2; j++)
{
do{ch=(getc(ifs));}
while(ch==','||ch=='\n'||ch=='\r');
map[j] = ch - '0';
cout << "map[" << i << "][" << j << "]= " << map[j]
<< endl;
}
}
cout << "\n" << endl;
return 0;
}
-------------------------------------------------------------
上記のプログラムで、
map[0][0]=1
map[0][1]=7
map[1][0]=2
map[1][1]=8
map[2][0]=3
map[2][1]=9
という風に格納にしたいです。
しかし、このプログラムをコンパイルすると、"File not open"と出てきます。つまり、ファイルがうまく格納されていません。
どなたかわかる方がいらっしゃれば、具体的にどのような形にすればよいか、ご指導願います。