[C] Werte und Zeilenanzahl aus test.txt als 'int' in Arrays speichern

Info-Stud2010

Grünschnabel
Hallo, tut mir echt Leid, dass ich diese Frage stelle muss, obwohl sie x-mal schon behandelt wurde, aber ich versteh es einfach nicht... Ich habe mir einige Beispiele angesehn, bin sie durchgegangen und raffs einfach nicht... :( Also sorry nochmal!

Problem:

Ich möchte eine Text-Datei in meinem C-Programm einlesen und die Werte "10","4160","3380", "2460" als int in Arrays abspeichern, außerdem noch die Zeilenanzahl der Text-Datei als int speichern...

Die Datei Text.txt sieht wie folgt aus:
10
A#4160
B#3380
C#2460

VIELEN DANK schon mal für JEDE Hilfe und nochmals sorry, bin einfach noch ein Anfänger... :(

Ich habe sehr viel versucht, komme aber einfach nicht zum Ziel...

Ein Lösungsansatz ist hier:

Code:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>   /* required for 'atoi' */

int main () 
{
/* DATEN-TYP 'partei' anlegen */
    typedef struct
    {
        char name[10];           /* Struktur-Element: Name der Partei */
        int stimmen;             /* Struktur-Element: Anzahl der Stimmen */
        int sitze;               /* Struktur-Element: Anzahl der Sitze */
    }partei;
/* DATEI EINLESEN - ANFANG */
    
    char c[10];
    char text[100+1];
    FILE *datei;
    int s[10];
    int i=0;
    
    datei=fopen("test.txt","r");
    if (datei ==NULL)
    {  
        printf("Error: can't open file.\n");
    }
    else
    {
       printf("File opend successfully. Contents:\n\n");
       while(fgets(c,10,datei)!=NULL)              /* Einlesen der TXT-Datei */
       {
           s[i]=atoi(c);
           i++;
       }
       printf("\n\nNow closing file...\n");
       fclose (datei);
    }

    printf("Test: s[0]: %d\n",s[0]);
    printf("Test: s[0]: %d\n",s[1]);
    printf("Test: s[0]: %d\n",s[2]);
    
    system("pause");
}
 
Das sieht vom Code auf den ersten Blick eigentlich ganz gut aus. Hast du denn einen Fehler ? Oder was funktioniert da genau nicht ?
 
1. Felder eines strings kannst du mit strtok in einzelne Strings aufsplitten, wenn diese mit einem Trennsymbol voneinander abgegrenzt werden.
2. Einen string, der ausschließlich einen Zahlenwert enthält, kannst du mit sscanf in einen long-, double- oderWasWeißIchFürEinen- Wert umwandeln.
3. Wenn du vor dem Einlesen schon weißt, wieviele Felder dein String hat, kannst du auch einfach ein fscanf verwenden.
Wenn du zu einem (oder mehreren) Punkt/en genaueres wissen willst, poste zu deiner möglichst präzise formulierten Frage am besten auch passende Beispieldaten.
 
Zurück