Mehrere, einzelne Werte einlesen



  • Hallo!
    Ich möchte ein Programm schreiben, welches mir mehrere verschiedene Werte einliest und diese am Schluss alle auf einmal wieder ausgibt. Bis jetzt geschieht dies jedoch immer nur mit dem zuletzt eingegebenen Wert. Was ist falsch?
    Danke!

    #include <stdio.h>
    #include <stdlib.h>
    
    main()
    {
    int i;
    static char *zahl[4];
    
    printf("Bitte etwas eingeben: ");
    
    for (i=0; i<=4; i++)
    {
    scanf("%[0-9]", zahl);
    while (getchar()!='\n');
    }
    
    printf("Es wurde eingegeben: %s\n", zahl);
    
    system("PAUSE");
    }
    


  • schreibs so!

    #include <stdio.h> 
    #include <stdlib.h> 
    
    int main() 
    { 
    int i; 
    static char zahl[4]; 
    
    printf("Bitte etwas eingeben: "); 
    
    for (i=0; i<4; i++) 
    { 
    scanf("%c", zahl+i); 
    while (getchar()!='\n'); 
    } 
    
    printf("Es wurde eingegeben: %s\n", zahl); 
    
    system("PAUSE"); 
    return 0;
    }
    

    Deine Indizes laufen falsch und du brauchst ein int main mit return 0;



  • Habe jetzt das Programm verändert, verstehe jedoch nicht direkt, was es mit diesem zweiten scan-Argument zu tun hat...
    Jetzt reagiert das Programm nach der zweiten Eingabe nicht mehr.

    #include <stdio.h>
    #include <stdlib.h>
    
    main()
    {
    int zahl[3], i;
    
    printf("Bitte etwas eingeben: ");
    
    for (i=0; i<=3; i++)
    {
    scanf("%d", zahl[i]);
    while (getchar()!='\n');
    }
    
    printf("Es wurde eingegeben: %d\n", zahl);
    
    system("PAUSE");
    }
    


  • Mir scheint, du hast das Durchlaufen eines Arrays noch nicht ganz verstanden.

    ein Array zahl[3] hat die Elemente zahl[0], zahl[1], zahl[2], also bei einem Schleifendurchlauf nur indizes von [AnzahlElemente - 1] verwenden => i<3

    scanf braucht die Adresse, an die sie das Element speicher soll. Die Adresse eines Elementes eines Arrays bekommt man mit &zahl[i] oder zahl+i!

    Für die Ausgabe eines Intarrays brauchst du auch eine Schleife



  • Vielen Dank, Programm funktioniert jetzt, wollte dies jedoch noch erweitern und bin auf ein weiteres Problem gestoßen:
    Möchte die 2. gespeicherte Zahl auf dem Bildschirm ausgeben, ist jedoch nicht möglich...(??)

    #include <stdio.h>
    #include <stdlib.h>
    
    int main()
    {
    int i;
    static char zahl[4];
    
    printf("Bitte etwas eingeben: ");
    
    for (i=0; i<4; i++)
    {
    scanf("%c", zahl+i);
    while (getchar()!='\n');
    }
    
    printf("Es wurde eingegeben: %s\n", zahl[2]);
    
    system("PAUSE");
    return 0;
    }
    


  • Hi,

    probiers mal so

    #include <stdio.h>
    #include <stdlib.h>
    
    int main(int argc, char **argv)
    {
    int i=0;
    static char zahl[4];
    
    printf("Bitte etwas eingeben: ");
    
    for (i=0; i<4; i++)
    {
    scanf("%c", zahl+i);
    while (getchar()!='\n');
    }
    
    printf("Es wurde eingegeben: %c\n", zahl[1]);  //Index geht bei 0 los und du gibst keinen String aus, sondern ein char
    
    system("PAUSE");
    return 0;
    }
    

Anmelden zum Antworten