Hallo, ich versuche, eine Metrik aus einer Textdatei zu importieren. Anfangs weiß ich nichts über die Matrix, also berechne ich die Anzahl der Zeilen in der Matrix und weise dann Platz zu. Wenn ich versuche die Matrix zu importieren, laufe ich in eine Endlosschleife. Ich verstehe nicht, warumImportieren Sie eine Matrix in c
Code:
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{
FILE *fp;
int i,j;
char ch;
fp = fopen(argv[1],"r");
if (fp == NULL)
{
puts ("Cannot open source file");
}
/*count the number of lines*/
int lines=1;
char c,junk;
while((c = fgetc(fp)) != EOF)
{
if(c == '\n')
lines++;
}
printf("lines= %i\n",lines);
double matrix[lines][100];
for(i = 0 ; i < lines ; i++)
{
j = 0;
do{
fscanf(fp, "%lf", &matrix[lines][j]);
j++;
}while((junk = fgetc(fp)) != '\n');
}
}
Matrix in Textdatei:
0.5000 0.4600 0.6400 0.3600 0.5000 0 0.4900 0.2200 1
0.5300 0.5600 0.4900 0.4600 0.5000 0 0.5200 0.2200 1
0.5200 0.5300 0.5800 0.6900 0.5000 0 0.5000 0.2200 1
0.6700 0.6200 0.5400 0.4300 0.5000 0 0.5300 0.2200 1
0.4500 0.5700 0.3000 0.1700 0.5000 0 0.5100 0.2200 3
0.6800 0.5300 0.4400 0.3100 0.5000 0 0.5100 0.2200 1
0.3800 0.4200 0.3100 0.3500 0.5000 0 0.5200 0.2200 3
0.4800 0.4600 0.5800 0.2600 0.5000 0 0.4400 0.2200 2
0.4500 0.3900 0.4600 0.2900 0.5000 0 0.4200 0.2200 1
0.7800 0.7500 0.4000 0.2800 0.5000 0 0.5300 0.2200 1
0.7400 0.8900 0.3200 0.2400 0.5000 0 0.5400 0.3200 4
0.2100 0.4100 0.5500 0.1100 0.5000 0 0.5000 0.2700 7
0.3500 0.5600 0.3600 0.3000 0.5000 0 0.5300 0.2500 3
0.8000 0.7300 0.4700 0.1900 0.5000 0 0.4900 0.2200 4
0.7600 0.7600 0.3500 0.2700 0.5000 0 0.4400 0.2200 4
0.3800 0.4000 0.5300 0.1200 0.5000 0 0.5500 0.2200 7
0.6500 0.6300 0.4700 0.2200 0.5000 0 0.5200 0.2700 7
0.4100 0.4900 0.5500 0.1300 0.5000 0 0.5500 0.2200 7
0.5300 0.5100 0.5100 0.1100 0.5000 0 0.4900 0.4100 2
0.8500 0.8500 0.3000 0.3100 0.5000 0 0.5500 0.4200 4
0.6100 0.4800 0.5600 0.1900 0.5000 0 0.5300 0.3100 7
0.5500 0.6900 0.5100 0.1200 0.5000 0 0.5100 0.2200 7
0.4900 0.4000 0.5800 0.2300 0.5000 0 0.4700 0.2700 7
0.5600 0.5700 0.6300 0.3900 1 0 0.5900 0.4000 2
0.4500 0.5000 0.5700 0.2900 0.5000 0 0.4400 0.1100 7
0.3200 0.4400 0.5400 0.2100 0.5000 0 0.4000 0.1900 7
0.7500 0.6700 0.5100 0.2900 0.5000 0 0.5200 0.3600 1
0.6300 0.5400 0.5300 0.2700 0.5000 0 0.4900 0.2200 7
Sie müssen 'int c 'ändern. Ein 'char' kann nicht' EOF' enthalten, aber 'int' wird es. –
ok. Wie importiere ich die Daten mit meinem Programm? Wenn ich versuche, diese Daten zu importieren, geht es in eine Endlosschleife. – Kobe00992
'while ((c = fgetc (fp))! = EOF)' das liest die ganze Datei und lässt 'fp' auf das Ende der Datei zeigen. Also gibt es nichts für das nachfolgende 'fscanf' zu lesen. Rufen Sie 'zurückspulen 'auf, um zum Anfang der Datei zurückzukehren. Und schlage vor, dass du 'fscanf' und' fgetc' nicht mischt ... das ist nur ein Rezept für eine Katastrophe, da sie sich gegenseitig stören, wenn du nicht sehr vorsichtig bist. – kaylum