atoi und sprintf ???



  • /* bspl0041.c */
    #include <stdio.h>
    #include <stdlib.h>
    
    main() {
      int ergebnis,zahl;
      char eingabe[80];
    
      printf("\nBitte eine Ganzzahl eingeben :");/*1*/
      gets(eingabe);
      ergebnis=atoi(eingabe);
      printf("Der Wert ist %i\n",ergebnis);
    
      printf("\nBitte eine Ganzzahl eingeben :");/*2*/
      scanf("%i",&zahl);
      sprintf(eingabe,"%i",zahl);
      printf("Der String lautet %s\n",eingabe);
    }
    

    Hallo! Ich bin gerade am C lernen. Bei diesem Beispiel aus einem Buch
    geht es um die Funktionen atoi (ascii to int) und sprintf.
    atoi soll Textdarstellung in numerische Darstellung umwandeln und sprintf
    soll eine Zahl in eine Zeichenkette umwandeln. Wenn ich aber bei /*1*/
    z.B. Hallo eingebe bekomme ich 0 und wenn ich bei /*2*/ z.B. 13 eingebe
    bekomme ich 13 zurück. Fehlt bei mir die stdlib.h oder hab ich was
    falsch verstanden? 😕



  • Wie soll atoi() den String "Hallo" in ein Integer wandeln? Das macht doch keinen Sinn.

    Außerdem ist gets() böse. Nimm lieber fgets().

    fgets(eingabe, sizeof(eingabe), stdin); // sizeof(eingabe) entspricht hier 80
    


  • wenn du "hallo" eingibst, dann ist "hallo" keine zahl.

    dein buch ist veraltet und bringt dir mittelalterliches C bei. tue dir den gefallen und schmeiss es bitte weg.



  • dein buch ist veraltet und bringt dir mittelalterliches C bei. tue dir den gefallen und schmeiss es bitte weg.

    C Programmieren von Anfang an
    von Helmut Erlenkötter

    Das Buch hat bei Amazon Top-Rezensionen - warum sollte ich das wegschmeissen?
    😞 😮 😕



  • weil es "int main(void)" heisst und nicht nur "main()" und der main-block hoert mit return 0; auf.
    ausserdem ist gets() ein fehler, ja ein fehler.



  • c.rackwitz schrieb:

    ausserdem ist gets() ein fehler, ja ein fehler.

    ein fehler 😕
    nicht doch nur ein foul?


Anmelden zum Antworten