C/C++/Java Buchstaben in Zahlen konvertieren?
Hallo Community! Ich möchte ein Programm (am besten in C) schreiben, wo man ein wort eingeben kann und das eingebene wort wird in ascii Zeichen umgewandelt. z.B.: wenn ich das wort "hallo" eingebe soll als Ausgabe das Wort "104;97:108;108;111" erscheinen. Kann mir jemand tips bzw einen Code dazu geben?
4 Antworten
in Ergänzung deines codes:
#include <string.h>
int main()
{
char password[100];
int length;
unsigned int i;
printf("type in your password");
gets(password);
length=strlen(password);
for(i = 0; i < length; i++) printf("%d;", password[i]);
return 0;
}
ich verstehe nicht, warum sich die kollegen sich dabei so schwer tun
das problem "dass Umlaute (ä,ü,ö usw.) nicht in der normalen ASCII Codierung dabei sind" hast nicht nur du. du meintest zwar was anderes, aber: Die ASCII-Kodierung kennt keine Umlaute. Einfach ausgedrückt. Das thema ist sehr komplex. google mal selber nach ASCII ANSI umlaute.
geh einfach davon aus, dass die Codierung die du siehst, richtig ist. du bist unter windows? dein programm ist wohl eine konsol-anwendung (aufruf auf der CMD-shell). wenn du dein programm mit GUI mit einer form umschreibst, wird beim ö was anderes angezeigt.
mach mal folgendes: gib auf der kommandozeile
echo ö >> test.txt
öffne test.txt mit dem editor. hänge an das zeichen das richtige ö an. schliessen. auf der kommandozeile:
type test.txt
das A in ASCII und ANSI meint American (USA). und Europa ist weit weg.
weiter gehts mit UTF8 und UNICODE.
nicht traurig sein. nein, es gibt keine Lösung.
trotzdem vielen dank. ich bin drauf gekommen, dass ein ö,ä,ü usw trotzdem als int ausgeben wird nur halt mit irgendeiner zahl, aber wenn man das gegenstück zu der Verschlüsselung baut, ist die codierung nachvollziehbar!
Hallo maximilianus7, weißt du, wie ich eine Funktion hinzufügen kann, dass man die exe ausführen kann und gleich in der command line ein Wort hinzufügen kann? .. das heißt, dass ich "tool.exe " eingebe und danach das in zahlen umgewandelt ausgegeben wird?
also statt dem gets() ?
statt int main() :
int main (int argc, char** argv)
in argv[1] müsste dann das wort aus der kommandozeile stehen.
ein wort ist hier eine zeichenfolge die keine leerzeichen enthält, es sei denn diese ist in " eingeschlossen.
Eingabe in ein Array einlesen. Array mit For-Schleife durchlaufen und jedes Zeichen als Zahl ausgeben. Ergebnis anschauen, Problem finden, Problem lösen.
Wie wandel ich dann das wort um .. ich les das eingegebene wort mit "gets()" ein. Dann weiß ich was im Wort drinen steht .. was mach ich dann?
Hallo!
Das war eins meiner ersten Programme (in C, in JAVA, in Fortran ...)
Solltest auch selbst lösen können, wenn du die Sprache lernen willst.
Gruß
Kannst du mir nicht einfach den Code zur Verfügung stellen? ich will die Sprache nicht lernen. Ich benötige nur diese eine Funktion
Kannst du so etwas simples nicht selbst?
int main()
{
char password[100];
int length;
int i;
printf("type in your password");
gets(password);
length=strlen(password);
for(i=0;i==length;i++)
was muss ich jetzt in der for Schleife tun?
Ausgeben, als Zahl, die einzelnen Zeichen *facepalm*
Entweder du willst C lernen, dann lern C. Das mach tman mit einem Buch oder einem Tutorial im Internet, in beidem wird soetwas ganz schnell und früh erklärt.
Oder du willst kein C lernen, dann lass andere Leute deinen Code schreiben.
das ist wahrscheinlich eine zeile code, kannst du die nicht einfach schreiben?
Könnte ich, werde ich aber nicht. Aus oben genannten Gründen.
<
p>was sagst du dazu ?
for(i=0;i==length;i++){
if(password[i]=='a'){
password[i]='a';
}
}
Weil du mit dem Code ein Char-Array durchläufst und alle a mit a überschreibst.
ja beim überschreiben hatte ich eh den ascii code aber der wird von der webiste automatisch geändert
Du brauchst es nciht überschreiben. Einfach nur die Zeichen einzeln ausgeben. Beim ausgeben kannst du entscheiden, ob es als Zeichen, als Dezimalzahl oder sonst irgendwas ausgegeben werden soll.
Das Einlesen ist richtig oder?
char password[100];
int length;
int i=0;
printf("type in password:");
gets(password);
Jetzt hab ich im password zum Beispiel ein "Hallo" drinen stehen wenn ich es eingebe.
Nun möchte ich aber statt einem "h" zum Beispiel "d" ausgeben. Da muss ich doch das h überschreiben oder? Dazu muss ich eine Schleife machen und schauen wo und ob sich ein h im Wort befindet oder?
for(i=0;i==length;i++){
if(password[i]=='H'){
password[i]='d'; }
}
printf(password);
Was ist daran bitte falsch?
Ob das so richtig ist kann ich dir nicht ohne eigene Recherche sagen, da ich C nurnoch auf Embedded Systems einsetze und ich dort nichts mit Eingaben und Strings zu tun habe. Probier es einfach aus.
Nein, du brauchst es nicht überschreiben. So wie du es geschrieben hast kannst du es auch garnicht überschreiben, da in einen Char nur ein Zeichen passt.
Versuche nicht, den Inhalt des Arrays anzupassen. In dem Array selbst stehen schon die richtigen Zahlen drin, da ein PC nur mit Zahlen arbeiten kann. Du musst diese Zahlen (die direkt nach dem einlesen schon im Array stehen) einfach nurnoch einzeln formatiert ausgeben. Formatiertes ausgeben machst du mir printf, das wird in jedem Buch und Tutorial breit erklärt.
Formatiertes Ausgeben sollte ja auch mit einer for-Schleife gehen oder?
for(i=0;i==length;i++){
printf("%c\n",password[i]);
}
oder lieg ich da falsch? Bei dieser Anweisung sollte er mit ja alle Buchstaben nacheinander ausgeben oder?
So ist das gedacht, ja. Die Formatierung musst du dir selbst aussuchen.
weißt du, wie ich eine Funktion hinzufügen kann, dass man die exe ausführen kann und gleich in der command line ein Wort hinzufügen kann? .. das heißt, dass ich "tool.exe 'word' " eingebe und danach das 'word' in zahlen umgewandelt ausgegeben wird?
Der Computer unterscheidet nicht zwischen Buchstaben und Zahlen, das tut nur die Ausgabe.
und ich möchte als ausgabe zahlen verwenden
Hallo! Vielen Dank erstmal! Nun hab ich nur noch das Problem, dass Umlaute (ä,ü,ö usw.) nicht in der normalen ASCII Codierung dabei sind. Das heißt wenn ein Umlaut eingeben wird, gibt das Programm nicht die richtige Codierung aus. Hast du dazu noch einen Tipp/Lösung? Vielen Danke nochmal!!