2 Werte pro Zeile aus einer dat datei auslesen

moin


Also erstmal darfst du string Zahlen[100]; nicht zweimal machen!
Dann, für string musst du die string.h oder string ohne .h includieren.


mfg
umbrasaxum
 
Findet man die string.h auch in C?
Habs ebend ausprobiert...erst nachdem ich die iostream eingefügt hatte, funzte es...aber leider immernoch die frage, ob es auch so in c geht und nicht nur in c++.

hier mal mein code:
Code:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//#include <iostream.h>

int main()
{
  FILE *datei;
  int err,i,n;
  string tiere[29];
  double wertx[9],werty[9];

  i=0;
  datei = fopen ("C:\\Dokumente und Einstellungen\\Administrator\\Desktop\\Aufgabe_4\\tiere.dat", "r");
  if (datei==NULL){printf("Datei existiert nicht\n");}
  else{
    do{
      err = fscanf(datei,"%s %lf %lf",tiere[i],&wertx[i],&werty[i]);
      printf("%s %lf %lf\n",tiere[i],wertx[i],werty[i]);
      i++;
    }
    while(err !=EOF && i < 10);
  }
  //printf("%s %lf\n",tiere,wertx[8]);
  system("PAUSE");
  fclose(datei);
  return 0;
}

NEonIC
 
Zuletzt bearbeitet:
Anner Uni arbeite ich mit gcc. hier jetzt bei mir mit dev c++ (und der soll ja auch gcc ursprungs sein)..

Hab mich geirrt...geht bei mir auch ohne die iosteam nicht.
Irgendwas stimmt aber an meinem Code nicht...und der Fehler liegt definitiv beim string bzw. char.
Hier nochmal die eigentliche Version:
Code:
#include <stdio.h>
#include <stdlib.h>


int main()
{
  FILE *datei;
  int err,i,n;
  char tiere[29];
  double wertx[9],werty[9];

  i=0;
  datei = fopen ("C:\\Dokumente und Einstellungen\\Administrator\\Desktop\\Aufgabe_4\\tiere.dat", "r");
  if (datei==NULL){printf("Datei existiert nicht\n");}
  else{
    do{
      err = fscanf(datei,"%s %lf %lf",tiere[i],&wertx[i],&werty[i]);
      printf("%s %lf %lf\n",tiere[i],wertx[i],werty[i]);
      i++;
    }
    while(err !=EOF && i < 10);
  }
  //printf("%s %lf\n",tiere,wertx[8]);
  system("PAUSE");
  fclose(datei);
  return 0;
}

Die Textdatei (tiere.dat) sieht so aus:

Werwolf 0.2500000 -0.0100000
Tom 1.0000000 -0.0100000
Itchy 0.0800000 -0.0020000
Oger 1.5000000 -0.0500000
Charming_Bear 0.5000000 -0.0400000
Kaetzchen_vom_Baum -1.0000000 0.0100000
Jerry -2.0000000 0.0100000
Scratchy -0.2000000 0.0004000
Einhorn -0.5000000 0.4000000
Muffinman -0.5000000 0.0250000

Thx schonmal für Antwort! Hoffe, dass ich mein Pensum an Fragen für heute nicht aufgebraucht habe...;P

Greetz NEonIC
 
Zuletzt bearbeitet:
Habs selbst gelöst! Ich danke für deine Hilfe. Man musste nur nen bissl mit struct arbeiten:
Code:
#include <stdio.h>
#include <stdlib.h>

struct eintrag{
  char tiere[39];
};

struct eintrag array[10];


int main()
{    
  FILE *datei;
  int err,i,n;
  
  double wertx[9],werty[9];

  i=0;
  datei = fopen ("C:\\Dokumente und Einstellungen\\Administrator\\Desktop\\Aufgabe_4\\tiere.dat", "r");
  if (datei==NULL){printf("Datei existiert nicht\n");}
  else{
    do{
      err = fscanf(datei,"%s %lf %lf",array[i].tiere,&wertx[i],&werty[i]);
      printf("%s %lf %lf\n",array[i].tiere,wertx[i],werty[i]);
      i++;
    }
    while(err !=EOF && i < 10);
  }
  system("PAUSE");
  fclose(datei);
  return 0;
}

Greetz NEonIC
 
Hi,

du solltest im Übrigen aber nicht versuchen die Datei zu schliessen, wenn diese gar nicht geöffnet werden konnte (führt zu einem Speicherzugriffsfehler).

Im Klartext, der fclose()-Aufruf muss noch mit in den else-Zweig deiner Bedingung.
 
Zurück