neues struct-problem



  • ein paar auszüge aus dem programm

    struct eff
    {
    	char nachname[20];
    	char vorname[20];
    	int umsatz;
    };
    struct eff verk_eff[9];
    int n_verk,count;
    ...
    ...
    main()
    {
            printf("Geben sie die gewuenschte Anzahl ein:");
    		scanf("%d",&count);
             for (n_verk=0;n_verk<=count-1;n_verk++)
    	{
    		printf("Bitte Nachnamen eingeben:\n");
    		scanf("%s",verk_eff[n_verk].nachname);
    		printf("Bitte Vorname eingeben:\n");
    		scanf("%s",verk_eff[n_verk].vorname);
    		printf("Bitte geben sie den Quartalsumsatz fuer das Jahr 2001 ein:\n");
    		scanf("%d",&verk_eff[n_verk].umsatz);	
    	}
    ...
    ...
    printf("%c%s%c%s%c%d%c\n",vertikal,verk_eff[n_verk].nachname,vertikal,verk_eff[n_verk].vorname,vertikal,&verk_eff[n_verk].umsatz,vertikal);
    

    erstes problem, er gibt nichts aus für die namen, und das zweite ist, dass er ne zahl ausgibt, die nicht mit der übereinstimmt, die ich eingegeben habe

    <edit=kingruedi>
    Bitte Code Beispiele immer mit [ cpp]hier der Code[ /cpp] (ohne leerzeichen nach der [ ) einschließen, wegen der Formatierung und Syntax Highlight. Das sorgt garantiert für mehr leser und antworten. Danke
    </edit>



  • Das Problem liegt an deiner verwendung von scanf. Da scanf bis zu einem newline zeichen ('\n') liest, dies aber nicht aus dem Tastatur-Buffer entfernt, liest der nächste scanf Befehl, als erstes Zeichen aus dem Tastatur-Buffer das \n, liest also nicht weiter usw.

    Daher sollte das eher so aussehen scanf("%d\n", variable); weil das \n in scanf dafür sorgt, dass das folgende \n mit eingelesen wird.

    btw. die Frage gehört nach ANSI C



  • Dieser Thread wurde von Moderator/in kingruedi aus dem Forum Rund um die Programmierung in das Forum ANSI C verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • zum String einlesen könntest du auch gets([array]); verwenden, oder noch besser:

    fgets([array],[maximale anzahl der zeichen],stdin);

    mfg (c)h


Anmelden zum Antworten