Hill Verschlüsselung
-
Hallo, ich habe ein Verschlüsselungsprogramm in java geschrieben was ich nun in C umschreiben muss. Nur leider bin ich noch ein C Anfänger, und mit meinen java kentnissen komme ich auch nicht viel weiter. Das programm läuft so, ich muss über der tastatur buchstaben bzw wörter einlesen und die dann in Zahlen umwandeln um mit denen weiter zu rechnen. Ich bin schonmal so weit:
#include <stdio.h> int main() { char string [3]; printf ("Eingabe: \n "); gets (string); printf ("Deine Eingabe lautet: %s\n",string); return 0; }
mein Programm liest due buchstaben über der tastatur und speichert sie. Nun muss es noch um konvertiert werden. Kann mir jemand bitte weiter helfen ?
Viele Grüße
(Ps. habe im forum eine ähnliche fragestellung gelesen die mir aber leider nicht weiter hilft)
-
K.Andreas schrieb:
Nun muss es noch um konvertiert werden. Kann mir jemand bitte weiter helfen ?
Du musst schon konkrete Fragen stellen, wo genau es hapert, wenn dir jemand helfen soll.
-
Ja nehmen wir an ich würde 'hallo' eingeben, dann will ich das mir das programm folgendes ausgibt: 7 0 16 16 14, h müsste also die 7 sein usw. es würdemir aber auch genügen wenn ich wüsste wie ich es ins ascii code umwandeln könntse sprich das A wird zu 65, dann rechte ich einfach minus 65 und habe somit das gleiche ergebniss!
-
#include <stdio.h> int main() { char buf[256]; int i; printf("Eingabe:\n"); gets(buf); for (i = 0; i < strlen(buf); ++i) { printf("(%i %c)", buf[i], buf[i]); } }
-
sdasd schrieb:
#include <stdio.h> int main() { char buf[256]; int i; printf("Eingabe:\n"); gets(buf); for (i = 0; i < strlen(buf); ++i) { printf("(%i %c)", buf[i], buf[i]); } }
Dazu ist noch anzumerken:
a hat den ASCII Code 97
A hat den ASCII Code 65
-
1. gets sollte man nicht benutzen. Nie nie niemals! Da es keine Bereichsüberprüfung macht. Wie man in deinem Beispiel sieht. Du reservierst Speicher für 2 Zeichen + 0 Terminierung und gibst "hallo" ein. Also schon 3 Zeichen zu viel. Nimm dafür lieber man: fgets.
2. C ist eine sehr hardwarenahe Sprache. Daher wird kein Unterschied gemacht zwischen einem Zeichen und der Repräsentation in der entsprechenden Kodierung (zB ASCII)
int main() { char const *hallo = "hallo"; printf("%c %d %d\n", hallo[1], hallo[1], hallo[1] - 'a'); }