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

    1. 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.
    2. 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.
    3. in Zeile 13 gibst Du genau einmal genau einen Wert aus, wie soll Dein Programm also auch mehr als einen Wert ausspucken?


  • @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 Cast

    https://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;
    }
    

Anmelden zum Antworten