配列のファイル読み込みの方法が分かりません。一応次に示すプログラムまで作りました。
1 23
2 40
3 :
4 :
: :
: :
5000 4098
というテキストファイルを読み込んで、出力したいです。
#include <stdio.h>
int main(void){
FILE *fp;
double x[5000];
double y[5000];
if((fp=fopen("demo-10mTorr-30W.txt","r"))==NULL){
printf("ファイルが開けません\n");
}
while(fgets(x,5000,fp)!=NULL){
printf("%f %f\n",x,y);
}
}
fclose(fp);
return 0;
}
・分からない点
配列の読み込み方。
またこれを実行した場合、全て0が出力されてしまいます。
よろしくお願いします。
No.4
- 回答日時:
数値と数値の間の空白が1つだという前提で文字列を分解してみました。
結構面倒な…。
こんな感じですかねー?
char s[5000], sx[5000], sy[5000];
int i, n;
/* ↑必要な宣言を追加しました↑ */
fgets(s, 5000, fp);
for(i = 0; i < 5000; i++){
if(s[i] == ' ' || s[i] == '\t'){
strncpy(sx, s, i);
sx[i] = '\0';
x[0] = atof(sx);
n = i+1;
}
else if(s[i] == '\n'){
strncpy(sy, &s[n], n-i);
sy[n-i] = '\0';
y[0] = atof(sy);
break;
}
}
No.5ベストアンサー
- 回答日時:
☆ float → %f double → %lf
http://www.k-cube.co.jp/wakaba/server/format.html
---------------------------------
>というテキストファイルを読み込んで、出力したいです。
「だけ」でしたら、「配列」は必要ありません。
☆レコード(行)を、\n までの文字列として読み込み、そのまま出力するだけ。
char cBuf[256]; 256 は、レコードの最長よりも大きいこと。
while( NULL != fgets( cBuf, 256, fp ) ){ 1行ずつ読み込む、256 は「文字数」
printf( "%s", cBuf ); 改行の \n は cBuf の末端に(読み込まれて)入っている。
}
http://www.bohyoh.com/CandCPP/C/Library/fgets.html
---------------------------------
>配列の読み込み方。
配列「へ」の読み込み方。・・ですよね(=配列へ格納)。
☆5000行全てを読み終えてから、(何らかの処理をし)、出力するのであれば「配列」が必要。
データが整数である場合、
int iX[5000], iY[5000], nn = 0, i;
while( EOF != fscanf( fp, "%d %d", &iX[nn], &iY[nn] ) ){
nn++; ( 5000 over チェック省略)
}
(何らかの処理)
for( i = 0; i < nn; i++ ){
printf( "%4d %4d\n", iX[i], iY[i] );
}
データが実数である場合、
int nn = 0, i;
float fX[5000], fY[5000];
while( EOF != fscanf( fp, "%f %f", &fX[nn], &fY[nn] ) ){
nn++;
}
(略)
http://www.bohyoh.com/CandCPP/C/Library/fscanf.h …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# pythonのファイルの並びでの読み込みとリストについて 4 2022/04/13 03:52
- C言語・C++・C# Cのdoubleの浮動小数点表示について 3 2023/04/17 13:14
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- C言語・C++・C# C 言語の Gauss Jordan 法について 2 2022/12/28 11:16
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelVBAで質問です。離れた二...
-
C言語 配列の長さの上限
-
パイソンの
-
C言語で特定列だけを抽出して配...
-
アルファベットの配列を数字の...
-
C言語の配列のサイズ
-
配列を使わずに、変数名を動的...
-
Excel、VBAのユーザーフォーム...
-
本日までの累計を表示させたい!
-
メモリの初期値
-
【C言語】配列の中に配列を入れ...
-
構造体配列を引数とするDLL作成...
-
if文で「配列a[i]が小数ならば...
-
unsigned char の配列で途中で0...
-
配列の参照渡しで型が一致しま...
-
配列内の文字間を排他的論理和...
-
c言語乱数について
-
先頭アドレスとは何ですか?
-
【速いブラインドタッチ】手を...
-
構造体配列のポインタを引数に
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語 配列の長さの上限
-
配列を使わずに、変数名を動的...
-
配列で格納したものをmsgboxで...
-
配列の参照渡しで型が一致しま...
-
C# Listを使わずに2次元配列の...
-
VBで構造体の配列を関数に渡す...
-
複数の選択範囲の行番号を個別...
-
パイソンの
-
先頭アドレスとは何ですか?
-
【速いブラインドタッチ】手を...
-
C# 配列の変数宣言について。
-
C言語初心者 ポインタについて...
-
unsigned char配列への入力の仕方
-
テキストファイルから文字列を...
-
ExcelVBAで質問です。離れた二...
-
Redimした動的配列はEraseする...
-
C言語で特定列だけを抽出して配...
-
擬似コード 長さがmの配列でな...
-
メモリの初期値
-
C言語初心者 構造体 課題について
おすすめ情報