text verschlüsseln
-
hey, ich würde gerne ein Programm schreiben, welches einen vorher eingegebenen Text verschlüsselt, indem es die Buchstaben vertauscht. Das Programm funktioniert zwar, das heißt, die txt kann geöffnet werden und auch beschrieben werden, jedoch wird der text nicht verschlüsselt. Hier die Funktion zum verschlüsseln der Eingabe:
void verschlüsseln() { int i; char eingabe[LAENGE]; for(i=0;i<=LAENGE;i++) { if((eingabe[i] == 'A') || (eingabe[i] == 'a')) { eingabe[i] = 'z'; }else if((eingabe[i] == 'B') || (eingabe[i] == 'b')) { eingabe[i] = 'y'; }else if((eingabe[i] == 'C') || (eingabe[i] == 'c')) { eingabe[i] = 'x'; }else if((eingabe[i] == 'D') || (eingabe[i] == 'd')) { eingabe[i] = 'w'; }else if((eingabe[i] == 'E') || (eingabe[i] == 'e')) { eingabe[i] = 'v'; }else if((eingabe[i] == 'F') || (eingabe[i] == 'f')) { eingabe[i] = 'u'; }else if((eingabe[i] == 'G') || (eingabe[i] == 'g')) { eingabe[i] = 't'; }else if((eingabe[i] == 'H') || (eingabe[i] == 'h')) { eingabe[i] = 's'; }else if((eingabe[i] == 'I') || (eingabe[i] == 'i')) { eingabe[i] = 'r'; }else if((eingabe[i] == 'J') || (eingabe[i] == 'j')) { eingabe[i] = 'q'; }else if((eingabe[i] == 'K') || (eingabe[i] == 'k')) { eingabe[i] = 'p'; }else if((eingabe[i] == 'L') || (eingabe[i] == 'l')) { eingabe[i] = 'o'; }else if((eingabe[i] == 'M') || (eingabe[i] == 'm')) { eingabe[i] = 'n'; }else if((eingabe[i] == 'N') || (eingabe[i] == 'N')) { eingabe[i] = 'm'; }else if((eingabe[i] == 'O') || (eingabe[i] == 'o')) { eingabe[i] = 'l'; }else if((eingabe[i] == 'P') || (eingabe[i] == 'p')) { eingabe[i] = 'k'; }else if((eingabe[i] == 'Q') || (eingabe[i] == 'q')) { eingabe[i] = 'j'; }else if((eingabe[i] == 'R') || (eingabe[i] == 'r')) { eingabe[i] = 'i'; }else if((eingabe[i] == 'S') || (eingabe[i] == 's')) { eingabe[i] = 'h'; }else if((eingabe[i] == 'T') || (eingabe[i] == 't')) { eingabe[i] = 'g'; }else if((eingabe[i] == 'U') || (eingabe[i] == 'u')) { eingabe[i] = 'f'; }else if((eingabe[i] == 'V') || (eingabe[i] == 'v')) { eingabe[i] = 'e'; }else if((eingabe[i] == 'W') || (eingabe[i] == 'w')) { eingabe[i] = 'd'; }else if((eingabe[i] == 'X') || (eingabe[i] == 'x')) { eingabe[i] = 'c'; }else if((eingabe[i] == 'Y') || (eingabe[i] == 'y')) { eingabe[i] = 'b'; }else if((eingabe[i] == 'Z') || (eingabe[i] == 'z')) { eingabe[i] = 'a'; }else if(eingabe[i] == ' ') { eingabe[i] = '|'; } } }
Ich habe mir gedacht, dass die for-schleife mit i jedes Zeichen von eingabe durchgeht und kontrolliert um welchen Buchstaben es sich handelt um diesen dann umzuwandeln.
Hier der rest vom Programm:
void main() { FILE *datei; char c; char eingabe[100]; datei = fopen("meineTxt","r+"); if(!datei) { perror("Fehler:"); exit(0); } printf("Was schreiben? :"); fgets(eingabe, sizeof(eingabe), stdin); do { c = fgetc(datei); // ändern if((c == 'A') || (c == 'a')) { c = 'z'; }else if((c == 'B') || (c == 'b')) { c = 'y'; }else if((c == 'C') || (c == 'c')) { c = 'x'; }else if((c == 'D') || (c == 'd')) { c = 'w'; }else if((c == 'E') || (c == 'e')) { c = 'v'; }else if((c == 'F') || (c == 'f')) { c = 'u'; }else if((c == 'G') || (c == 'g')) { c = 't'; }else if((c == 'H') || (c == 'h')) { c = 's'; }else if((c == 'I') || (c == 'i')) { c = 'r'; }else if((c == 'J') || (c == 'j')) { c = 'q'; }else if((c == 'K') || (c == 'k')) { c = 'p'; }else if((c == 'L') || (c == 'l')) { c = 'o'; }else if((c == 'M') || (c == 'm')) { c = 'n'; }else if((c == 'N') || (c == 'N')) { c = 'm'; }else if((c == 'O') || (c == 'o')) { c = 'l'; }else if((c == 'P') || (c == 'p')) { c = 'k'; }else if((c == 'Q') || (c == 'q')) { c = 'j'; }else if((c == 'R') || (c == 'r')) { c = 'i'; }else if((c == 'S') || (c == 's')) { c = 'h'; }else if((c == 'T') || (c == 't')) { c = 'g'; }else if((c == 'U') || (c == 'u')) { c = 'f'; }else if((c == 'V') || (c == 'v')) { c = 'e'; }else if((c == 'W') || (c == 'w')) { c = 'd'; }else if((c == 'X') || (c == 'x')) { c = 'c'; }else if((c == 'Y') || (c == 'y')) { c = 'b'; }else if((c == 'Z') || (c == 'z')) { c = 'a'; }else if(c == ' ') { c = '|'; } if(feof(datei)) { break; } fputc(c,stdout); } while(1); if(eingabe != '\n') { verschlüsseln(); fputs("\n",datei); fputs(eingabe, datei); }else { fclose(datei); } fclose(datei); }
Danke im vorhinein
-
Oh Gott.. das lese ich mir jetzt nicht durch sondern verweise einfach mal auf ASCII, oder (für die Ritter der Standarte) auf ein festgelegtes Alphabet.
-
Das
char eingabe[LAENGE];
aus verschluesseln() ist nur lokal in verschluesseln() bekannt.Nimm ein C-Buch (aus Papier) und fang von Vorne an das durchzuarbeiten.
-
also, das Verschlüsseln an sich funktioniert schon, nur wird es nicht angewandt...
-
Form und Aussehen sind in Ordnung.
Alles richtig eingerückt und C/C++ Tags verwendet. Etwas viel Leerzeilen.Aber an der Technik musst du noch arbeiten. Unbedingt.
-
Nimm ein C-Buch (aus Papier) und fang von Vorne an das durchzuarbeiten.
bin ich grad dabei...
Aber an der Technik musst du noch arbeiten. Unbedingt.
naja, bin ja noch Anfänger, wird sich schon noch bessern.
-
du rufst die funktion verschlüsseln auf, die ein nicht initialisiertes char array enthält. wer soll da für dich die daten reinbeamen?
so am rande: deine 100 zeilen verschlüsselungscode lassen sich auf rund 2 bis 3 zeilen code reduzieren.
-
Fang doch erstmal an Daten von einer Datei (lesen) in eine andere Datei (schreiben) zu kopieren.
Wenn du das erfolgreich geschafft hast, kannst du zum Verschlüsseln übergehen.
Der Compiler gibt Fehlermeldungen und Warnungen aus.
Diese Warnungen sind auch wichtig. Schreib dein Programm so, dass keine Warnungen mehr entstehen. Schalte im Compiler auch alle Warnungen ein.
-
vllt. ne kleine übung, kapitel parameterübergabe, mit zeiger vorgeschmack:
void verschluesseln_oder_entschluesseln ( char* s ) { while(*s) { if ( *s >= 'A' && *s <= 'Z' ) *s = 'Z' + 'A' - *s; else if ( *s >= 'a' && *s <= 'z' ) *s = 'z' + 'a' - *s; s++; } } int main ( void ) { char s[] = "Wurstbrot"; verschluesseln_oder_entschluesseln ( s ); printf ("verschluesselt: %s\n", s ); getchar(); verschluesseln_oder_entschluesseln ( s ); printf ("entschluesselt: %s\n", s ); getchar(); ...
-
vllt. ne kleine übung, kapitel parameterübergabe, mit zeiger vorgeschmack:
Danke, damit werde ich mich auf jeden Fall näher beschäftigen.
Fang doch erstmal an Daten von einer Datei (lesen) in eine andere Datei (schreiben) zu kopieren.
Wenn du das erfolgreich geschafft hast, kannst du zum Verschlüsseln übergehen.
So hab ich's hinbekommen, danke