Ich versuche eine einfache Funktion zu erstellen, die eine Datendatei aufnimmt und verschiedene Werte aus der Datendatei einem globalen Array von Strukturen zuweist. Allerdings habe ich Probleme damit, dass es richtig funktioniert. Ich habe geschrieben, was ich glaube, ist die meisten der benötigten Code, aber meine Testlinie printf("time is %d\n", BP[i].time);
liest einfach "Time is 0" 10 Mal, was zu der Annahme führt, dass die Werte nicht dem Struktur-Array zugewiesen werden, wie ich es mir vorgestellt habe.Lesen von Daten aus einer Datei in ein Struktur-Array (C)
Wie kann ich weiter verfahren?
Beispiel-Datendatei (.txt):
0001 553 200
0002 552 100
.... ... ...
Aktuelle Code:
#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()
Dies ist jetzt die perfekte Gelegenheit zu lernen, einen Debugger zu verwenden. Durchlaufen Sie den Code und überprüfen Sie alle relevanten Variablen, um zu sehen, was * wirklich * vor sich geht! :-) – alk
Schauen Sie sich zweimal '(filePtr = fopen (fileName," r ") == NULL)' an. Was passiert hier 1.? – alk
Und als minimale Debugging-Unterstützung möchten Sie die gelesenen Werte * innerhalb * der Schleife ausgeben. Wird überhaupt etwas gelesen? – alk