Datensätze einlesen

  • Themenstarter Themenstarter di-five
  • Beginndatum Beginndatum
D

di-five

Hallo,

ich habe ein Problem, und komme leider überhaupt nicht weiter :(

Ich soll folgenden Datensatz:

datensaetze.dat
Code:
 6  8
 0  0
 6  9
 5  6
 8 12
10 15

mit folgendem Programmaufruf:

Code:
a.out < datensaetze.dat

einlesen und dann weiter verarbeiten.
Ich brauche jede Zahl ohne Leerzeichen, auch die Zahlen mit zwei Ziffern als eine Zahl.

Mein Code sieht bisher wie folgt aus:

Code:
int c;
int i=0;

while((c=getchar()) != EOF)
{
    putchar(c);
    i++;
}
    printf("%i\n", i);

Ich komme absolut nicht weiter, ich weiß nicht wie ich die Zahlen nun in ein array kriege.

Über Hilfe würde ich mich sehr freuen.

Viele Grüße
di-five
 
Hi LSd,

vielen Dank für den Link :)

Ich gucke mir das nochmal an.

Das Programm ist in C geschrieben.

Viele Grüße
di-five
 
Zuletzt bearbeitet von einem Moderator:
Ok, nehmen wir mal die Funktion sscanf():

http://pi.informatik.uni-siegen.de/.../c_018_022.htm#RxxobKap01802204002A2C1F01018C

Wenn ich das Programm nun wie folgt starte:

Code:
./a.out < datensaetze.dat

Dann wird das Programm doch ohne Argumente gestartet oder?

Hm, ich glaube das Problem liegt schon darin, dass die Daten zeichenweise
eingelesen werden.

Ich weiß nicht wie ich die Zahlen aus dem Stream kriege.

Kann mir jemand sagen, wie ich die Daten aus dem Stream kriege,
oder wo mein Denkfehler bzw. meine Wissenslücke ist?

Kann mir jemand sagen wie ich die Ints daraus kriege?
 
Zuletzt bearbeitet von einem Moderator:
Hi.

Ich würde empfehlen, die Eingabe zeilenweise zu verarbeiten (mit der Funktion fgets) und die Daten aus der eingelesenen Zeile einfach mit sscanf auszulesen.

Gruß
 
Hi deepthroat,

ich habe das mit fgets() leider noch nicht so ganz verstanden.

Ich möchte mich aber trotzdem für eure Posts bedanken, und kurz erläutern, wie ich das Problem nun gelöst habe, um den Thread als beantwortet zu markieren.

Ich sollte 6 Datensätze einlesen, und habe das nun mehr oder weniger "statisch" gemacht. Mir war bis fgets() gar nicht klar, dass wenn man solche Funktionen nacheinander aufruft, auch ein Wert nach dem anderen eingelesen wird :P
Das ist schonmal eine tolle Erkenntnis :)

Ich habe also einfach die scanf()-Funktion in einer Schleife für 6 Datensätze aufgerufen, und hoffe, dass das dann auch der gewünschte Lösungsweg ist hehe.

Hier mal der Code:

C:
int main()
{
    int a;
    int b;
    
    printf("\n1. Zahl   2. Zahl   Produkt   ggT   kgV   ggT * kgV");
    printf("\n---------------------------------------------------\n");
    
    int i;
    
    for(i=0; i<6; i++)
    {
        scanf("%i%i", &a, &b);
        
        if(a == 0 && b == 0)
        {
            printf("  Der ggT von 0 und 0 ist nicht definiert!\n");
        }
        else
        {
            printf("  %3.i       %3.i       %3.i     %3.i   %3.i      %3.i\n", a, b, a*b, ggtrek(a, b), kgvite(a, b), ggtrek(a, b) * kgvite(a, b));
        }
    }
    
    printf("---------------------------------------------------\n\n");
    
    return 0;
}

Vielen Dank und viele Grüße
di-five
 
Zuletzt bearbeitet von einem Moderator:
Zurück