hallo kann mir jemand bitte erklären was hier dran falsch ist ? oder warum das nicht klappt.
Code:
#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 */
if( argc != 3 )
{
printf("\nFehler: Falsche Anzahl an Parametern..." );
printf("\n\nVerwendung:\n %s dateiname aktion", argv[0]);
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);
}