zahlen von 1 bis 3 mit strings ersetzen



  • Ich hab ein code geschrieben das zahlen von 0 bis 3 mit strings ersetzt. Also wenn der input z.B 0 ist wird der output "zero"
    und bei 1 ist der output "one" usw bis 3.

    und ich darf nur getchar und putchar für diese aufgabe verwenden und keine funktion.

    Jedoch wenn der input 11 ist , ist der output "oneone". es soll aber 11 sein. das passiert bei alle 2 stelligen zahlen. wenn der input 22 is soll der output auch 22 sein und nicht "twotwo"

    Kann mir irgendwer ein tipp geben wie ich mein code modfizieren kann dass es nicht so ist?

    #include <stdio.h>
    
        int main()
        {
        int c;
        char* arr[4] = {"zero", "one", 
        "two","three"};
        int i;
    
        while ((c = getchar ()) != EOF)
        {
            if(  c >='0' && c <= '3') {
    
                int index = c - '0';
                char* str = arr[index];
                for (i = 0; str[i] != '\0'; i++) {
                    putchar(str[i]);
                }
            }
            else{
                putchar(c);
            }
    
         }
        return 0;
        }
    


  • Es ist sehr unhöflich die selbe Frage in verschiedenen Foren zu stellen ohne auch darauf hinzuweisen.

    https://www.reddit.com/r/C_Programming/comments/8iwr5d/replacing_integers_with_strings/



  • aber wie hast du den beitrag gefunden?



  • uchiha schrieb:

    aber wie hast du den beitrag gefunden?

    Ich habe ihn dort zu erst gesehen, dann hier.

    Toll! Nun ist er da komplett weg!



  • probier das:

    #include <stdlib.h>
    #include <stdio.h>
    
    int main ()
    {
        char buff[0xff];
        unsigned rp = 0, wp = 0;
        int c=0;
        while ((c=getchar()) != EOF)
        {
            buff[wp] = (char)c;
            wp = (wp+1)&0xff;
            if (c == 10 || c == 13)
            {
                if (1 == wp - ((rp + 1) & 0xff))
                {
                    switch (buff[rp])
                    {
                        case '0':
                            putchar('z');
                            putchar('e');
                            putchar('r');
                            putchar('o');
                            break;
                        case '1':
                            putchar('o');
                            putchar('n');
                            putchar('e');
                            break;
                        case '2':
                            putchar('t');
                            putchar('w');
                            putchar('o');
                            break;
                        case '3':
                            putchar('t');
                            putchar('h');
                            putchar('r');
                            putchar('e');
                            putchar('e');
                            break;
                        default:
                            putchar(buff[rp]);
                            break;
                    }
                    putchar(c);
                    rp=wp;
                }
                else
                    while (rp != wp)
                    {
                        putchar(buff[rp]);
                        rp = (rp + 1) & 0xff;
                    }
            }
        }
    }
    


  • versuchistswert schrieb:

    probier das:

    ...
        char buff[0xff];
        ...
    

    BUGBUG: muss heißen: char buff[0x100];



  • Biolunar schrieb:

    Es ist sehr unhöflich die selbe Frage in verschiedenen Foren zu stellen ohne auch darauf hinzuweisen.

    https://www.reddit.com/r/C_Programming/comments/8iwr5d/replacing_integers_with_strings/

    Oh schon wieder mein Post gelöscht, das übrigens erneut nicht gegen dir Forumsregeln verstossen hat. Daher jetzt mal richtig:

    Biolunar du bist ein erbärmicher, schwacher, kleinkarirrter Wichser wie er im Buche steht. Warum tust du der Welt keinen Gefallen und löscht dich selbst? Du kannst den Post hier wieder löschen, aber nicht den Gedanken in deinem mikrigen Gehirn der dir sagt: Scheisse der hat recht! Diese Gewissheit ist ausreichend für mich.



  • DanielSS schrieb:

    Biolunar schrieb:

    Es ist sehr unhöflich die selbe Frage in verschiedenen Foren zu stellen ohne auch darauf hinzuweisen.

    https://www.reddit.com/r/C_Programming/comments/8iwr5d/replacing_integers_with_strings/

    Oh schon wieder mein Post gelöscht, das übrigens erneut nicht gegen dir Forumsregeln verstossen hat. Daher jetzt mal richtig:

    Biolunar du bist ein erbärmicher, schwacher, kleinkarirrter Wichser wie er im Buche steht. Warum tust du der Welt keinen Gefallen und löscht dich selbst? Du kannst den Post hier wieder löschen, aber nicht den Gedanken in deinem mikrigen Gehirn der dir sagt: Scheisse der hat recht! Diese Gewissheit ist ausreichend für mich.

    Rechtschreibung und Grammatik sind ja auch nicht deine Stärke... Alleine anziehen und Schuhe binden und so schaffst du aber?!