C/C++/Java Buchstaben in Zahlen konvertieren?

4 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

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


GamerMichi 
Beitragsersteller
 17.09.2015, 09:37

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!!

maximilianus7  17.09.2015, 17:53
@GamerMichi

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.

GamerMichi 
Beitragsersteller
 18.09.2015, 08:02
@maximilianus7

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!

GamerMichi 
Beitragsersteller
 28.09.2015, 09:31
@maximilianus7

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?

maximilianus7  28.09.2015, 21:11
@GamerMichi

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.


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ß


GamerMichi 
Beitragsersteller
 14.09.2015, 15:01

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?


GamerMichi 
Beitragsersteller
 14.09.2015, 14:03
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?
NeoExacun  14.09.2015, 14:08
@GamerMichi

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.

GamerMichi 
Beitragsersteller
 14.09.2015, 14:13
@NeoExacun

das ist wahrscheinlich eine zeile code, kannst du die nicht einfach schreiben?

GamerMichi 
Beitragsersteller
 14.09.2015, 14:29
@NeoExacun

<

p>was sagst du dazu ?
for(i=0;i==length;i++){ if(password[i]=='a'){ password[i]='a'; } }

NeoExacun  14.09.2015, 14:41
@GamerMichi

Weil du mit dem Code ein Char-Array durchläufst und alle a mit a überschreibst.

GamerMichi 
Beitragsersteller
 14.09.2015, 14:55
@NeoExacun

ja beim überschreiben hatte ich eh den ascii code aber der wird von der webiste automatisch geändert

NeoExacun  14.09.2015, 14:56
@GamerMichi

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.

GamerMichi 
Beitragsersteller
 14.09.2015, 15:18
@NeoExacun

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 "&#100" 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]='&#100'; }
}
printf(password);

Was ist daran bitte falsch?



NeoExacun  14.09.2015, 15:32
@GamerMichi

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.

GamerMichi 
Beitragsersteller
 14.09.2015, 15:50
@NeoExacun

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?

NeoExacun  14.09.2015, 15:53
@GamerMichi

So ist das gedacht, ja. Die Formatierung musst du dir selbst aussuchen.

GamerMichi 
Beitragsersteller
 28.09.2015, 11:14
@NeoExacun

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?

GamerMichi 
Beitragsersteller
 14.09.2015, 13:55

Nein, aber du könntest mir helfen

PerfectMuffin  14.09.2015, 14:02
@GamerMichi

Der Computer unterscheidet nicht zwischen Buchstaben und Zahlen, das tut nur die Ausgabe.