Liste aus Datei in Array einlesen



  • Hallo!

    Ich habe eine Datei, in der sich eine Liste von Zahlen befindet, die jeweils durch ein oder mehrere Spaces getrennt sind.
    "99 91 119 144 89 115 142 137 80 71 97 78"

    Wie lese ich diese jetzt am besten in ein Array ein? Mein Quellcode sieht mitlerweile so aus : 😕 🙄

    #include<stdio.h>
    #include<stdlib.h>
    #include<ctype.h>
    
    int get_number(FILE *datei)
    {
      char letter, ascii_number[4] = { 0,0,0,0 };
      int i=0;
    
      while(isdigit(letter = getc(datei))) {  
        ascii_number[i] = letter;
        i++;
      }
      return atoi(ascii_number); 
    }
    
    int main()
    {
      int i;
      int anzahl;
      int laengen[50];
      char temp;
      FILE *handylist;
    
      if((handylist=fopen("handy.in","rb"))==NULL) {
        printf("Fehler beim Oeffnen der Eingabedatei!\n");
        exit(1);
      }
      printf("Oeffnen der Eingabedatei war erfolgreich!\n");
      anzahl = get_number(handylist);  
      printf("Anzahl Handys gelesen: %d\n",anzahl);
    
      for(i=0;i<anzahl;i++) {
        while(!isdigit(temp = getc(handylist)));
        laengen[i] = get_number(handylist);
        printf("%d ", laengen[i]);
      }
    
      printf("\nBeenden....\n");
    
      fclose(handylist);
      return 0;
    }
    

    [ Dieser Beitrag wurde am 23.02.2003 um 13:40 Uhr von darkpenguin editiert. ]



  • ich würde strtok dafür benutzen (Achtung, wenn du Threads einsetzt oder strtok mehrfach verwendest und du ein POSIX kompatibles System hast, würde ich strtok_r nehmen!)



  • Danke vielmals!

    Könnte mir jemand vielleicht ein Anwendungsbeispiel geben?
    Die man-page zu strtok hat mich ein bisschen verwirrt. 😕

    [ Dieser Beitrag wurde am 23.02.2003 um 16:57 Uhr von darkpenguin editiert. ]



  • #include <stdio.h>
    #include <string.h>
    
    int main(int argc, char **argv)
    {
      if(argc!=3)
      {
        fprintf(stderr,"usage: %s <string> <delim>\n",argv[0]);
        return 1;
      }
      printf("%s\n",strtok(argv[1],argv[2]));
      for(char *s;(s=strtok(NULL,argv[2]));)
        printf("%s\n",s);
      return 0;
    }
    
    > ./strtok "a b c" " "
    a
    b
    c
    

    HTH



  • 🙂 THX ! Das hat mir sehr geholfen.


Anmelden zum Antworten