goto marke



  • Hallo. Folgender code gibt immer die Fehlermeldung: Marke »ende« verwendet, aber nicht definiert, aus. aber ich habe die marke doch definiert, oder nicht?

    /* bspl0077.c */
    #include <stdio.h>
    #include <stdlib.h>
    
    #define MAX_STRING 81
    
    main(int argc, char *argv[]) {
      FILE *stream;
      char puffer[MAX_STRING],ende;
      int ch;
      /* Ist kein Kommandozeilenparameter vorhanden? */
      if(argc < 2) {
        printf("\nAufruf: bspl0077 <dateiname>\n");
        exit(1);
      }
      /* Ist die Datei nicht vorhanden? */
      if((stream = fopen(argv[1],"r")) == NULL) {
        printf("\n'%s': Oeffnungsfehler!\n",argv[1]);
        exit(1);
      }
      while(fgets(puffer,MAX_STRING,stream)!=NULL) {
        printf("%s",puffer);
        ch=fgetc(stdin); /* Warte auf Tastendruck */
        switch(ch) {
          /* zurück zum Anfang */
          case 'a':
          case 'A':
            fseek(stream,0L,SEEK_SET);
            break;
          /* Abbruch */
          case 27:
            goto ende;
        }
        fseek(stdin,0L,SEEK_END);
      }
      ende;
      fclose(stream);
    }
    


  • hast du nicht, du hast eine Variable ende deklariert.

    /* bspl0077.c */
    #include <stdio.h>
    #include <stdlib.h>
    
    #define MAX_STRING 81
    
    main(int argc, char *argv[]) {
      FILE *stream;
      char puffer[MAX_STRING];
      int ch;
    ...
            goto ende;
        }
        fseek(stdin,0L,SEEK_END);
      }
    ende:
      fclose(stream);
    }
    


  • hm, ok. wie deklariere ich die marke, wenn nicht so?



  • Schau dir doch mal genau an, was supertux geschrieben hat - oder frag deinen guten Freund Google mal nach "c goto" und lies dir ein bisschen was durch ;).
    Die Sache ist sehr einfach zu nutzen, du hast es dir ganz schön kompliziert gemacht.


Anmelden zum Antworten