Array... Zahlen-Datei auslesen

Von: , Frage gestellt am So, 6. Dez 2009

Hallo ihr :=)

Ich habe ein Problem, ich möchte aus einer Datei, in der in Jeder Zeile eine Zahl steht in mein Programm übernehmen... habe auch schon paar Versuche gemacht, aber leider bekomme ich eine endlosschleife...

# include <stdio.h>
int main ( )  {
FILE *zahlen; /* FILE wird in der Adresse von Zahlen gespeichert */
int zahl[19]; /* Platz für max. 20 Zahlen */
int i=0, k=0; 
/* Alle Plätze werden auf Null gesetzt */
for ( i = 0; i<20; i++ )
{
zahl[i] = 0;
}
zahlen = fopen ("sort.dat", "r" ); /*Zahlen aus sort.dat werden ausgelesen */
while (!feof (zahlen) )
{
fscanf (zahlen, "%i", &zahl[k]);
k++;
}
return 0;  }


Ich möchte zwar noch ziemlich viel mit dem Programm anstellen, aber zuerst muss ich die Datei einlesen und auch die Liste wieder ausgeben können. Danke schon mal.
LG S.I.E

6 Antworten zu dieser Frage

  1. Antwort von nach einer Stunde 0 hilfreich
    Re: Array... Zahlen-Datei auslesen

    Howdy, int zahl[19]; /* Platz für max. 20 Zahlen */
    Punkt 1: dein Array ist nicht gross genug für 20 Element.

    Punkt 2: Ersetz mal deine Schleife durch

    for (k=0; 1 == fscanf(zahlen,"%d\n",&zahl[k]);k++)
    {
    ;
    }
    for (i = 0; i < k; ++i)
    {
    printf("[%d/%d] = %d\n",i,k,zahl[i]);
    }
    


    und schau, was in den einzelnen Zahlen drinnen steht.

    Gruss
    norsemanna

    • Antwort von nach 3 Stunden 0 hilfreich
      Re^2: Array... Zahlen-Datei auslesen

      # include <stdio.h>
      # include <stdlib.h>
      int main ( )  {
      FILE *zahlen; /* FILE wird in der Adresse von Zahlen gespeichert */
      int zahl[20]; /* Platz für max. 20 Zahlen */
      int i=0, k=0; 
      /* Alle Plätze werden auf Null gesetzt */
      for ( i = 0; i<20; i++ )
      {
      zahl[i] = 0;
      }
      zahlen = fopen ("sort.dat", "r" ); /*Zahlen aus sort.dat werden ausgelesen */
      for ( k=0; 1== fscanf (zahlen,"%d%n", &zahl[k]);k++)
      {
      ;
      }
      for ( i = 0; i<20; i++)
      {
      printf("[%d/%d] = %d\n",i,k,zahl[i]);
      }  
      return 0;  }
      


      Nun bekomme ich den Fehler core dumped, Segmentation fault ???
      Ich bin nun echt durcheinander :=)

      • Antwort von nach 12 Stunden 0 hilfreich
        Re^3: Array... Zahlen-Datei auslesen

        Hi,

        :  for ( k=0; 1== fscanf (zahlen,"%d%n", &zahl[k]);k++)
        
        Nun bekomme ich den Fehler core dumped, Segmentation fault ???
        Du solltest das ganze kopieren, nicht einzelnd abtippen. Da stand im Original nicht %d%n sondern %d\n. %n erwartet einen weiteren Parameter, der aber nicht da ist, deswegen SEGV

        Gruss
        norsemanna

        • Antwort von nach 18 Stunden 0 hilfreich
          Re^4: Array... Zahlen-Datei auslesen

          Vielen Dank für deine Hilfe :=)

          ich verwechsle das immer mit java :=), denn in java kann man das machen.

          Gibt es in C eigentlich eine Möglichkeit, die Array- Grenze so zu bestimmen, dass es den Zahlen aus der Datei angepasst wird ???

          Also, wenn ich nicht wüsste, dass 20 zahlen in der Datei sind, wie müsste ich dann die Array Grenze anlegen? In Java wäre das ja array.length, gibt es nicht sowas auch in C ???

          • Antwort von nach 19 Stunden 0 hilfreich
            Re^5: Array... Zahlen-Datei auslesen

            Howdy, Also, wenn ich nicht wüsste, dass 20 zahlen in der Datei sind,
            wie müsste ich dann die Array Grenze anlegen? In Java wäre das
            ja array.length, gibt es nicht sowas auch in C ???
            unter Benutzung des vector templates, ja (siehe http://www.cplusplus.com/reference/stl/vector/).

            #include <vector>
            std::vector<int> zahl;
            int x;
            zahl.reserve(1024);        
            for (; 1 == fscanf(zahlen,"%d\n",&x);)
            {
            zahl.push_back(x);
            }
            for (i = 0; i < zahl.size(); ++i)
            {
            printf("[%d/%d] = %d\n",i,k,zahl[i]);
            }
            


            Gruss
            norsemanna

            • Antwort von nach 23 Stunden 0 hilfreich
              Re^6: Array... Zahlen-Datei auslesen

              Vielen Dank für eure Hilfe :=)

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!