was klappt hier nicht ?



  • /* Program: codierer.c
    * Aufruf: codierer [dateiname] [aktion]
    * dateiname = Dateiname für/mit codierten Daten
    * aktion = D zum Decodieren und alles andere zum
    * Codieren
    * – – – – - – – – – – – – – – – – – – – – – – – */
    
     #include <stdio.h>
     #include <stdlib.h>
     #include <string.h>
     #include <conio.h>
    
     int zeichen_codieren( int ch, int wert );
     int zeichen_decodieren( int ch, int wert );
    
     int main( int argc, char *argv[])
     {
         FILE *fh;               /* Datei-Handle  */
         int rv = 1;             /* Rückgabewert  */
         int ch = 0;             /* Variable zur Aufnahme eines Zeichens */
         unsigned int ctr = 0;   /* Zähler */
         int wert = 5;           /* Wert, mit dem codiert wird */
         char puffer[256];       /* Puffer */
    
    	 printf("Bitte Datei name eingeben\n");
    	 scanf("%ca");
    
    	 printf("C für Codiern und D für dekodiern\n");
    	 scanf("%c");
    
    	 if( argc != 3 )
         {
            printf("\nFehler:  Falsche Anzahl an Parametern..." );
            printf("\n\nVerwendung:\n   %s dateiname aktion", argv[0]);
            scanf("%s
    		printf("\n\n   Wobei:");
            printf("\n   dateiname = zu codierende/decodierende Datei");
    		printf("\n   aktion = D zum Decodieren, C zum Codieren\n\n");
    
    		rv = -1;       /* Rückgabewert */
         }
         else
         if(( argv[2][0] == 'D') || (argv [2][0] == 'd' ))  /*decodieren*/
         {
             fh = fopen(argv[1], "r");   /* öffnet die Datei   */
             if( fh <= 0 )               /* prüft auf Fehler   */
             {
                 printf( "\n\nFehler beim Öffnen der Datei..." );
                 rv = -2;               /* Fehlercode setzen */
             }
             else
             {
                 ch = getc( fh );     /* liest ein Zeichen ein */
                 while( !feof( fh ) )  /* prüft das Ende der Datei */
                 {
                    ch = zeichen_decodieren( ch, wert );
                    putchar(ch);  /* schreibt das Zeichen auf den Bildschirm */
                    ch = getc( fh);
                 }
    
                 fclose(fh);
                 printf( "\n\nDatei auf dem Bildschirm decodiert.\n" );
             }
         }
         else  /* Codierung */
    	 {
    
             fh = fopen(argv[1], "w");
             if( fh <= 0 )
             {
                 printf( "\n\nFehler beim Erzeugen der Datei..." );
                 rv = -3;  /* Fehlercode setzen */
             }
             else
             {
                 printf("\n\nZu codierenden Text eingeben. ");
    			              printf("Mit Leerzeile beenden.\n\n");
    
                 while( fgets(puffer, 256, stdin) != NULL )
                 {
                     if( strlen (puffer) <= 1 )
                          break;
    
                     for( ctr = 0; ctr < strlen(puffer); ctr++ )
                     {
                      ch = zeichen_codieren( puffer[ctr], wert );
                      ch = fputc(ch, fh);  /*Zeichen in die Datei schreiben*/
                     }
                 }
                 printf( "\n\nDatei codiert.\n" );
                 fclose(fh);
             }
    
         }
    	 getch();
         return (rv);
     }
    
     int zeichen_codieren( int ch, int wert )
     {
         ch = ch + wert;
         return (ch);
     }
    
     int zeichen_decodieren( int ch, int wert )
     {
         ch = ch - wert;
         return (ch);
     }
    


  • nyuu_3 schrieb:

    /* Program: codierer.c
    * Aufruf: codierer [dateiname] [aktion]
    * dateiname = Dateiname für/mit codierten Daten
    * aktion = D zum Decodieren und alles andere zum
    * Codieren
    * – – – – - – – – – – – – – – – – – – – – – – – */
    
     #include <stdio.h>
     #include <stdlib.h>
     #include <string.h>
     #include <conio.h>
    
     int zeichen_codieren( int ch, int wert );
     int zeichen_decodieren( int ch, int wert );
     
     int main( int argc, char *argv[])
     {
         FILE *fh;               /* Datei-Handle  */
         int rv = 1;             /* Rückgabewert  */
         int ch = 0;             /* Variable zur Aufnahme eines Zeichens */
         unsigned int ctr = 0;   /* Zähler */
         int wert = 5;           /* Wert, mit dem codiert wird */
         char puffer[256];       /* Puffer */
         char eingabe;           // irgendwo müssen die eingaben von scanf ja landen
    
    	 // warum ist der Teil überhaupt drin? du holst dir das doch sowieso aus den programmargumenten...
    /*
    	 printf("Bitte Datei name eingeben\n");
    	 scanf("%c",&eingabe);
    
    	 printf("C für Codiern und D für dekodiern\n");
    	 scanf("%c",&eingabe);
    */
         
    	 if( argc != 3 )
         {
            printf("\nFehler:  Falsche Anzahl an Parametern..." );
            printf("\n\nVerwendung:\n   %s dateiname aktion", argv[0]);
            scanf("%c",&eingabe);       // hier fehlte "); <----------------------------------
    		printf("\n\n   Wobei:");
            printf("\n   dateiname = zu codierende/decodierende Datei");
    		printf("\n   aktion = D zum Decodieren, C zum Codieren\n\n");
            
    		rv = -1;       /* Rückgabewert */
         }
         else
         if(( argv[2][0] == 'D') || (argv [2][0] == 'd' ))  /*decodieren*/
         {
             fh = fopen(argv[1], "r");   /* öffnet die Datei   */
             if( fh <= 0 )               /* prüft auf Fehler   */
             {
                 printf( "\n\nFehler beim Öffnen der Datei..." );
                 rv = -2;               /* Fehlercode setzen */
             }
             else
             {
                 ch = getc( fh );     /* liest ein Zeichen ein */
                 while( !feof( fh ) )  /* prüft das Ende der Datei */
                 {
                    ch = zeichen_decodieren( ch, wert );
                    putchar(ch);  /* schreibt das Zeichen auf den Bildschirm */
                    ch = getc( fh);
                 }
     
                 fclose(fh);
                 printf( "\n\nDatei auf dem Bildschirm decodiert.\n" );
             }
         }
         else  /* Codierung */
    	 {
     
             fh = fopen(argv[1], "w");
             if( fh <= 0 )
             {
                 printf( "\n\nFehler beim Erzeugen der Datei..." );
                 rv = -3;  /* Fehlercode setzen */
             }
             else
             {
                 printf("\n\nZu codierenden Text eingeben. ");
    			              printf("Mit Leerzeile beenden.\n\n");
     
                 while( fgets(puffer, 256, stdin) != NULL )
                 {
                     if( strlen (puffer) <= 1 )
                          break;
     
                     for( ctr = 0; ctr < strlen(puffer); ctr++ )
                     {
                      ch = zeichen_codieren( puffer[ctr], wert );
                      ch = fputc(ch, fh);  /*Zeichen in die Datei schreiben*/
                     }
                 }
                 printf( "\n\nDatei codiert.\n" );
                 fclose(fh);
             }
     
         }
    	 getch();
         return (rv);
     }
     
     int zeichen_codieren( int ch, int wert )
     {
         ch = ch + wert;
         return (ch);
     }
     
     int zeichen_decodieren( int ch, int wert )
     {
         ch = ch - wert;
         return (ch);
     }
    

    siehe Kommentare...
    Nächstes Mal dann bitte doch etwas mehr schreiben, das sollte hier doch einen wunderschönen Fehler gebracht haben...



  • ja nach der logik sollte es eigentlich klappen tat es aber nicht, tut es noch immer nicht und ich weiß nicht warum O.o ich werd noch bekloppt. 😕

    oder sollte ich direkt eine datei übergeben ? oder eine festlegen ne fest aber das ist nicht sinn der sache. :xmas2: ich werd noch rum elch 😃



  • verdammte axt... sowas früh am morgen...

    was macht das programm denn bei dir und was soll es machen?


Anmelden zum Antworten