Datei in Array einlesen



  • Hallo Leute,

    hab hier ein problem ... will aus einer Textdatei in einen array einlesen.

    Das einlesen der Datei klappt glaube ich aber wenn ich dann den array anzeigen lasse ist er leer ... könnt ihr mir helfen?

    Hier mein code

    FILE *point;
    int c, i;
    point = fopen ("test.txt", "r");
    i = 0;
    while (( c = getc(point)) != EOF && i < 10);
    {
    *array[i++] = c;
    }



  • Verwende cpp tags!

    mach mal so hier!

    FILE *point;
    int c, i;
    point = fopen ("test.txt", "r");
    i = 0;
    while (( c = getc(point)) != EOF && i < 10);
    {
    *(array+i++) = c;
    }
    

    bash0r



  • wie lässt du das array anzeigen? --> '\0' wäre schön!
    wie wurde array deklariert?

    char *array[10];  // so sollte es aussehen
    

    ausserdem! bitte den rückgabewert von fopen auf NULL prüfen!

    @/bin/bash0R:
    geht nicht, weil array 2-dimensional ist

    AUSSERDEM 😃 😃 ::: (fällt mir gerade erst auf) ⚠
    WAS ZUM TEUFEL MACHT DAS SEMIKOLON NACH DEM WHILE?!?!?!?!?!?!?!?!? 👎
    WEG DAMIT!!!!
    (semikolon=strichpunkt)

    mfG (c)h 😃



  • Ich nochmal,

    also hab jetzt den quelltext probiert und hab leider immer noch das problem weil mein array is ein ( char array[10][20] ) und des "i" is ja ein "int" und dann sagt er mir dass er ein char nicht in ein int umwandeln kann ... hilfe *g*

    danke schon im vorraus

    Budda



  • @budda: voraus schreibt man mit einem r 😉 😃

    CODE POSTEN!!!

    [cpp]FILE *point;
    char array[10][20];
    int c, i;
    point = fopen ("test.txt", "r");
    i = 0;
    int a = 0;
    while (( c = getc(point)) != EOF && i < 10)
    {
    array[a][i++] = (char) c; // cast operator zum typ-umwandeln
    // [a] für 2. dimension, kann bei mehrmaligen aufruf hinaufgezählt werden
    }
    for(int j=0;j<i;j++) // weil kein \0 angehänt wurde!
    {
    putch(array[a][j]);
    }
    [/cpp]

    aber wozu das ganze?

    FILE *point= fopen ("test.txt", "r");
    char array[10][20];
    int i=0; 
    
    while((fgets(array[i],9,stream)>0)&&(i<20))
       i++;
    
    for(int j=0;j<i;j++)
    {
       puts(array[j]);
    }
    

    <!-- codes nicht getestet -->

    mfG (c)h



  • Danke für deinen Vorschlag ... ich versteh sogar was du mir sagen willst *g*, das einzige was ich bisher nicht kenne ist das "stream" dass du bei fgets mit einfügst. was bewirkt das?

    mfg budda



  • also hab des jetzt mal probiert doch --> an chille, in deiner obigen lösung erkennt er bei mir das "putch" nicht und in der unteren lösung kann er mit dem "stream" überhaupt nichts anfangen und in der msn-library blick ich net wirklich durch was er mir zu dem thema verklickern will.

    --> HELFT MIR <-- *g*

    Danke im Vorraus

    Budda



  • ok:

    nimm statt "putch" "putchar" (ANSI C, compilerabhängig)

    nimm statt "stream" "point" (das ist der FILE*)
    // bin ich so gewohnt, weil bei mir alle dateipointer stream heissen

    NOCHMAL: ES HEISST ⚠ VORAUS ⚠ !!!! 😉

    mfG (c)h



  • Die msdn sagt fgets(...,...,stream); "stream: Pointer to FILE structure"!
    Was gibts da nicht zu verstehen? 😉

    // bin ich so gewohnt, weil bei mir alle dateipointer stream heissen

    @chille07: also ich nenne meine meistens "fp" (file pointer). Ich würde mit stream irgendwie durcheinander kommen. Aber jedem wie es ihm liegt 😉 !

    mfg hohesC


Anmelden zum Antworten