No.2ベストアンサー
- 回答日時:
3行8列の0/1のみ、という前提の例示です。
エラーチェックはしてないので適当に入れてください。
--
#define ROWS 3
#define COLUMNS 8
FILE *fp;
char matrix[ROWS][COLUMNS];
int i, j;
fp = fopen(ファイル名, "r");
for(i = 0; i < ROWS; i ++)
{
fscanf(fp, "%s\n", matrix[i]);
for(j = 0; j < COLUMNS; j ++)
{
matrix[i][j] -= '0';
}
}
fclose(fp);
--
「行列要素は全部一桁」が前提なので二桁以上の場合はやり方を変える必要があります。
No.4
- 回答日時:
一気に変数へ読み込もうとすると分からなくなってしまうと思います
1) 1行読み込む
2) 読み込んだデータを各桁で処理する
3) ファイルの終端でなければ 1)に戻る
をコードにしてみましょう
char lbuf[32] = {0}; // ちょっと大目の行バッファ
char a[3][8] = {0}; // 読み込み後のデータ格納変数
int nLine = 0; // a[n]のカウンタ
int nLen = 0; // 行バッファの長さ検査用
while( fgets( lbuf, sizeof( lbuf ), fp ) ) {
nLen = strlen( lbuf ) - 1;
if ( nLen < 0 || nLen > 8 ) {
// 読み込んだデータの長さチェック
fprintf( stderr, "DataError\n" );
break;
}
if ( lbuf[nLen] == '\n' ) {
// 改行が付いているなら削除
lbuf[nLen] = 0;
}
for ( int n = 0; n < nLen; n++ ) {
// 各桁の処理
a[nLine][n] = lbuf[n] - '0';
}
// 次の行の準備
nLine++;
}
といった具合です
No.3
- 回答日時:
バイナリで書き出して読み込むというのはどうでしょうか?
以下に動作テストはしていませんが、バイナリでのファイル操作の例を載せます。
#include<stdio.h>
#define R 3
#define C 3
int main( )
{
int i, k ;
FILE *fp = NULL ;
int mat[ R ][ C ] = { { 1, 2, 3 },
{ 4, 5, 6 },
{ 7, 8, 9 } } ;
int tmp[ R ][ C ] ;
fp = fopen( "out.txt", "wb" ) ;
fwrite( mat, R * C, sizeof( int ), fp ) ;
fclose( fp ) ;
fp = fopen( "out.txt", "rb" ) ;
fread( tmp, sizeof( int ), R * C, fp ) ;
fclose( fp ) ;
for( i = 0 ; i < R ; i ++, puts( "" ) )
for( k = 0 ; k < C ; k ++ )
printf( "%d", tmp[ i ][ k ] ) ;
}
回答ありがとうございます。
バイナリファイルについての知識が不足しているため、試すことができませんでしたが、今後、勉強して生かしていきたいと思います!
No.1
- 回答日時:
ファイルIOなどすべて説明するのは不可能ですよ
C言語のの入門書に基本的なファイルIOはのっているはずです
それを参考に作ってみたコードを投稿してみましょう
お使いの開発環境のバージョンやエディション、お使いのOSの情報
などと
どのようなデータをどこからどのようにして何に読み込むのかを具体的に質問しましょう
CSVファイルを配列に 行、列として読み込みたい
現状 かくかくしかじか のソースにて読み込んでいるが
期待する結果にならない
元データ
a,b,c,d
a,c,d,e
a,d,g,h
実行時の読み込みデータ
abcd
acde
adgh
など具体的にしましょう
この回答への補足
回答ありがとうございます。
Visual C++を使っています。
テキストファイルに入力された0と1の組合せを読み込みたいです。
元データ
01010101
10101010
11010010
読み込み後
a[0][0]=0,a[0][1]=1,,,,,a[2][7]=0
のようにしたいです。
入門書には配列のファイル読み込みは載っているですが二次元配列の場合は、どのようにすれば良いのかわかりません。
つたない説明ですがよろしくお願いいたします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) excelにて、特定の列に数字入力してあれば、入力してある行コピーして 別ファイルに張り付ける 2 2022/08/11 05:33
- Visual Basic(VBA) テキストボックスの値を該当セルに登録する方法 2 2022/11/23 18:47
- Excel(エクセル) スプレッドシートのマクロで値の入力があるセルの範囲を指定する方法を教えて下さい 2 2022/04/05 17:29
- その他(プログラミング・Web制作) エクセルVBA 3 2022/06/11 16:01
- Visual Basic(VBA) エクセルVBA 4 2022/05/14 00:51
- Excel(エクセル) Excel ある複数列に数値を入力した際に、別の列に本日の日付を入力したいです 7 2023/03/01 23:31
- Excel(エクセル) Excelでなぜこのような式をつかっているのでしょうか、行に1,2,3と連番を振るだけなのに 5 2023/04/08 20:00
- その他(プログラミング・Web制作) Pythonで、データファイルと列名ファイルを1つのファイルにしたいです。 1 2023/07/27 20:29
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- Visual Basic(VBA) tatsumaru77様 昨日回答して頂いたものです。 すみませんが、昨日の質問で1つ補足があります 1 2022/05/15 15:06
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
複数ファイルの同時読み込みの...
-
C言語にてXMLファイルから任意...
-
fopenでファイル名に、変数を使...
-
C言語でファイル名を変数にした...
-
C言語でファイル読み書きを早く...
-
CRC32の計算方法
-
fscanfでループしてしまう。
-
CSVファイルの内容を構造体に格...
-
commons-netでのFTP送信について
-
ファイルに行番号を追加
-
【C言語】ファイルを読み込んで...
-
csvファイルの読み込みで失敗し...
-
c言語でのfscanfについて
-
C++で、先頭に同じ文字列がある...
-
txtファイルの文字を配列に格納
-
同時にファイル読み込み 書き込み
-
[C言語]2つのファイルを用いた...
-
C言語のファイル操作についての...
-
c言語 文字数のカウント 合わ...
-
テキストファイルをバイナリフ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ガンマ変換 C言語でプログラ...
-
c言語でのfscanfについて
-
なぜCSQとCIP形式ではコ...
-
複数ファイルの同時読み込みの...
-
fopenでファイル名に、変数を使...
-
ファイル出力で改行を入れたい!
-
ファイルへの書込み処理が異常...
-
【C言語】ファイルを読み込んで...
-
エラーがわかりません、、
-
C言語でセグメンテーションエ...
-
C言語でファイル読み書きを早く...
-
テキストファイル内に対して, ...
-
fgets( ) の返り値は何?
-
ファイルに行番号を追加
-
OpenGLによる描画内容をBMP出力
-
fscanfでループしてしまう。
-
c言語 ファイルから数字を読み...
-
ファイルが読み込めない・・・
-
CRC32の計算方法
-
CSVファイルの内容を構造体に格...
おすすめ情報