Problem mit String.



  • Hi.

    Ich habe hier eine Struktu angelegt die eigentlich recht simpel ist.
    Möchte einen Namen einlesen und direkt danach wieder asugeben. Beim Nachnamen kommt aber plötzlich eine 0. Woran kann das liegen?

    thx&cu



  • das ist alzheimer O_o
    der text:

    #include <stdio.h>
    
    struct person
    {
    	char vorname[20];
    	char nachname[20];
    	int alter;
    }	schueler[10];
    
    main()
    {
    	int anzsch,i;
    	printf("Wie viele Schueler?");
    	scanf("%d", &anzsch);
    
    	for (i=0;i<anzsch;i++)
    	{
    		gets(schueler[i].vorname);
    		puts(schueler[i].vorname);
    		gets(schueler[i].nachname);
    		puts(schueler[i].nachname);
    		scanf("%d", &schueler[i].alter);
    		printf("%d", schueler[i].alter);
    	}
    	return 0;
    }
    


  • Also du kannst es zum laufen bringen, wenn du vor den gets jeweils ein
    fflush(stdin); schreibst.
    Damit wird dann das Enter aus dem Eingabepuffer gelöscht.

    Warscheinlich wärst du aber mit fgets besser beraten.
    Ich würds dir gern erklären warum, habs aber selber vergessen 😉
    Such mal im Forum danach.



  • Ja, es ist besser fgetc zu benutzen

    gets() reads a line from stdin into the buffer pointed to by s until either a terminating newline or EOF, which
    it replaces with '\0'. No check for buffer overrun is performed (see BUGS below).

    aus man gets


Anmelden zum Antworten