struct + einlesen



  • hiho, also ich hab folgendes geschrieben.. programm ist noch nicht fertig aber zumindest mal zum teil, und es funktioniert nicht er schreibt folgenden fehler an:

    Syntaxfehler: Syntaxfehler: '}' Zeile 52
    und fatal error: Unerwartets Dateiende Zeile 53 (dies ja egtl garnimma gibt? ..

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    #define MAXNAME 30
    
    enum sprit {benzin = 0, diesel =1};
    
    struct Auto {
    		char ID;
    		char marke[MAXNAME];
    		enum sprit treibstoff;
    
    	};
    
    int main (int argc, char* argv[])
    {
    
    	int input=0;
    	struct Auto cars;
    
    	do {
    
    		printf("1: Auto hinzufuegen\n");
    
    		printf("3: Programm beenden\n");
    		printf("\n\nBitte auswaehlen: --> ");
    
    		fflush(stdin);
    		scanf("%d", input);
    
    		switch(input){
    
    					case 1: printf("\n\n\tEine neues Auto hinzufuegen:\n");
    						printf("\nID: ");
    						fflush(stdin);
    						scanf("%d\n",&cars.ID);
    						printf("Name: ");
    						fgets(cars.name, MAXNAME, stdin);					
    						printf("\Sprit: 0 fuer benzin, 1 fuer diesel\n");
    						do{
    							scanf("%d",&cars.geschlecht);
    						}while((cars.treibstoff == 0) || cars.treibstoff == 1);
    						printf("\n\Auto hinzugefuegt");
    						break;
    					/*case 3: printf("\n\n\tProgramm beendet");
    							EXIT_SUCCESS;
    							break;*/
    		}
    	}
    
    }while(input != 3);
    

    nun und ich hab halt keinen schleier was es da aufsich hat..



  • int main(int argc, char* argv[])
    {
           // ...hier steht dein code
           do { 
                 .....
            } while(...);
    

    was siehst du, bzw. was siehst du nicht?

    Richtig, der Main-Block ist nicht geschlossen, weil eine "}" fehlt.

    Edit: aufm 2. Blick sehe ich, dass das while hinter der falschen }-Klammer sitzt. das muss eine klammer davor stehen.



  • dekcarki schrieb:

    int main(int argc, char* argv[])
    {
           // ...hier steht dein code
           do { 
                 .....
            } while(...);
    

    was siehst du, bzw. was siehst du nicht?

    Richtig, der Main-Block ist nicht geschlossen, weil eine "}" fehlt.

    Edit: aufm 2. Blick sehe ich, dass das while hinter der falschen }-Klammer sitzt. das muss eine klammer davor stehen.

    hm danke schon mal das war schon mal was...

    jetzt schreibt er zwar 0 fehler an aber wenn ich zb 1 eingebe bricht das programm ab obwohl es ja in den switch case reinsollte?

    warum tut es das nicht?



  • printf("\n\nBitte auswaehlen: --> ");
    
            fflush(stdin);
            scanf("%d", input); // sollte hier nicht &input stehen?
    
    case 1: printf("\n\n\tEine neues Auto hinzufuegen:\n");
                            printf("\nID: ");
                            fflush(stdin);
                            scanf("%d\n",&cars.ID);  // <--- scanf("%d",&cars.ID)
                            printf("Name: ");
                            fgets(cars.name, MAXNAME, stdin);                   
                            printf("\Sprit: 0 fuer benzin, 1 fuer diesel\n");
                            do{
                                scanf("%d",&cars.geschlecht);
                            }while((cars.treibstoff == 0) || cars.treibstoff == 1); // "treibstoff" hast du in Struct Auto doch gar nicht definiert, du willst doch "geschlecht" überprüfen?!
                            printf("\n\Auto hinzugefuegt");
                            break;
    


  • dekcarki schrieb:

    printf("\n\nBitte auswaehlen: --> ");
           
            fflush(stdin);
            scanf("%d", input); // sollte hier nicht &input stehen?
    
    case 1: printf("\n\n\tEine neues Auto hinzufuegen:\n");
                            printf("\nID: ");
                            fflush(stdin);
                            scanf("%d\n",&cars.ID);  // <--- scanf("%d",&cars.ID)
                            printf("Name: ");
                            fgets(cars.name, MAXNAME, stdin);                   
                            printf("\Sprit: 0 fuer benzin, 1 fuer diesel\n");
                            do{
                                scanf("%d",&cars.geschlecht);
                            }while((cars.treibstoff == 0) || cars.treibstoff == 1); // "treibstoff" hast du in Struct Auto doch gar nicht definiert, du willst doch "geschlecht" überprüfen?!
                            printf("\n\Auto hinzugefuegt");
                            break;
    

    aja stimmt 😃 😃

    sehr schön jetzt ist schon fast alles perfekt BIS AUF:

    er überspringt das fgets einfach sprich er fordert mich nicht auf dass ich was eingebe.. 😕


Anmelden zum Antworten