データファイルを取り込み、データファイルのさまざまな値を構造体のグローバル配列に割り当てる単純な関数を作成しようとしています。しかし、私はかなりうまく動作するようになっている問題を抱えています。私は必要なコードの大部分であると信じているものを書いたが、私のテストラインprintf("time is %d\n", BP[i].time);
は単に "Time is 0" 10回、私は彼らがそうであると想像したように、値が構造体配列に割り当てられていないと信じさせてくれました。ファイルから構造体配列へのデータの読み込み(C)
さらに進めるにはどうすればよいですか?
例データファイル(.txt):
0001 553 200
0002 552 100
.... ... ...
現在のコード:有効な警告と
#include <stdio.h>
#include <stdlib.h>
// Function Prototype
void readFileBP(char fileName[1000]);
// Definition of BP Structure
struct bloodPressure
{
int *time;
int *sys;
int *dia;
}BP[50]; // end struct BP
int main()
{
char fileName[1000] = "C:\\Users\\User\\Desktop\\DataFiles\\BP_1.txt";
readFileBP(fileName);
int i = 0;
for (i; i<10; i++)
{
printf("Time is %d\n", BP[i].time);
}
} // end int main()
void readFileBP(char fileName[1000])
{
FILE *filePtr; // declare file pointer
int time;
int sys;
int dia;
int position = 0;
if (filePtr = fopen(fileName, "r") == NULL) // error check opening file
{
printf("Opening file failed. Please reenter filename.");
exit(1);
} // end if
while (fscanf(filePtr, "%d, %d, %d", &time, &sys, &dia) != EOF) // read in BP values
{
BP[position].time = time;
BP[position].sys = sys;
BP[position].dia = dia;
position++;
} // end while
fclose(filePtr);
} // end void readFile()
これは、デバッガを使用する方法を学ぶのに最適な機会です。関連するすべての変数を調べるコードをステップ実行して、実際に何が起こっているかを確認してください! :-) – alk
この '(filePtr = fopen(fileName、" r ")== NULL)'を2回見てください。ここで何が起こりますか? – alk
最小限のデバッグサポートとして、*ループ内の値を表示することができます。何かが全く読まれないのですか? – alk