Hallo ich habe vor nicht allzu langer Zeit hier die Frage gestellt wie man eine textdatei in C in ein Array einlesen kann um dann damit weiterzuarbeiten, vorallem zu rechnen.
Die funktionierende Loesung dafuer war auch sehr gut:
#include
int main()
{
char fname[] = „rot.txt“;
char zeile[128]; /* Zeilenbreite max. */
float rot[512]; /* max. Anzahl werte */
int i, nRot = 0; /* noch 0 Werte */
FILE *fp = fopen(fname,„rt“);
/* Teil 1: Einlesen */
printf(„Lese %s\n“, fname);
if(fp == NULL) {
perror(fname);
return 1;
}
while(fgets(zeile, sizeof(zeile), fp)) {
float val;
if(sscanf(zeile, „%f“, &val) > 0) {
rot[nRot] = val;
nRot++;
}
}
fclose(fp);
/* Teil 2: Auswerten */
printf("%d Werte gefunden\n", nRot);
for(i=0; i
Hallo
Nun habe ich aber mehrere Spalten, jeweils durch Leerzeichen
getrennt.
z.B.
1 3
7 14
8 16
11 15
Die Reihen sollen nun jeweils in ein eignes Array eingelesen
werden. z1[i] und z2[i].
Kann mir jemand vielleicht helfen wie ich C erklaere, dass es
mehrere Spalten sind?
Analog zum Vorhergehenden, durch sscanf mit einem
weiteren ‚%f‘ - Element.
sscanf(zeile, "%f %f", &v1, &v2)
Die entsprechenden Variablen müssen vorher
natürlich vereinbart werden, also z.B.:
#include
int main()
{
char fname[] = "rot.txt";
char zeile[128]; /\* Zeilenbreite max. \*/
float z1[512]; /\* max. Anzahl werte \*/
float z2[512]; /\* max. Anzahl werte \*/
int i, N = 0; /\* noch 0 Werte \*/
FILE \*fp = fopen(fname,"rt");
/\* Teil 1: Einlesen \*/
printf("Lese %s\n", fname);
if(fp == NULL) {
perror(fname);
return 1;
}
while(fgets(zeile, sizeof(zeile), fp)) {
float v1, v2;
if(sscanf(zeile, "%f %f", &v1, &v2) == 2) {
z1[N] = v1;
z2[N] = v2;
N++;
}
}
fclose(fp);
/\* Teil 2: Auswerten \*/
printf("%d Werte gefunden\n", N);
for(i=0; i
Grüße
CMБ