Word (String) in ASCII (Int) umwandel
-
Hey Community,
Ich bin wieder leicht an Zweifel. Also mein Programm soll:
- Das Wort z.B "ABC" in eine int umwandel lassen.
- Also müsste als Erg. das hier raus kommen: 656667
Bei mir ist das Problem, das das Programm nur den ersten Buchstaben herausliest also "A" indem Fall. Ich habe es schon andere Möglickeiten probiert die nicht ganz funktioniert...
Hier der Code mal:
#include <stdio.h> int main() { char inString[10] = ""; char zeichen = inString[0]; printf("Enter your string: "); scanf("%s", &zeichen); int i = (int) zeichen; printf("The encoding is: %d", i); return 0; }
Ich bin für jede Antwort dankbar!
PS: Ich bin noch "Anfänger", von daher wäre ich sehr erfreut über eine Erklärung ; )
-
@MrBrutDev
- in Zeile 6 weist Du zeichen den Inhalt des ersten Zeichens von inString zu.
Da steht zu diesem Zeitpunkt aber noch gar nichts drin, ist also überflüssig. - in Zeile 9 liest Du einen String ein - Du liest ihn aber in zeichen ein, dort passt aber genau nur ein Zeichen hinein, kann also gar nicht funktionieren und führt in diesem konkreten Fall auch noch zu einem Speicherfehler, weil Du via scan mehr einliest, als in zeichen gespeichert werden kann.
- in Zeile 13 gibst Du genau einmal genau einen Wert aus, wie soll Dein Programm also auch mehr als einen Wert ausspucken?
- in Zeile 6 weist Du zeichen den Inhalt des ersten Zeichens von inString zu.
-
@MrBrutDev sagte in Word (String) in ASCII (Int) umwandel:
Also müsste als Erg. das hier raus kommen: 656667
Mächtest du das wirklich als
int
haben oder als Ziffernfolge?Bei einem 32-Bit int wäre bei 4 Zeichen Schluss.
Wie ist das mit Zeichen, deren Code über 99 ist?
Man könnte da auf Hexadezimal ausweichen, dann wäre die Folge aber eine andere (414243)
-
Zeile 9: UB; Speicher für 1 char definiert, scanf beschreibt aber mind. 2
Zeile 11: sinnfreier Casthttps://onlinegdb.com/u4czLqoNp
#include <stdio.h> int main() { char str4[5], *c=str4; unsigned int i=0; scanf("%4[A-Z]",str4); while( *c ) { i = i * 100 + *c++; } printf("\"%s\" > %u", str4, i); return 0; }