atoi



  • Hallo zusammen,

    Dieser Queltext spiegelt ein atoi also ascii to integer. ich versteh irgendwie den sinn nicht so ganz..

    Ascii tabelle nach ganzzahl.

    #include <stdlib.h>
    #include <string.h>
    #include <stdio.h>
    
    void main(int argc, char *argv[])
    
    { 
    int ergebnis,zahl;
    char eingabe[80];
    
    printf("\n Bitte eine ganze Zahl eingeben!");
    gets(eingabe);									//Zahl wird eingegeben!
    
    ergebnis= atoi(eingabe);							// Umwandlung erfolgt!
    
    printf("Der Wert ist %i",ergebnis);				// 
    
    system("Pause");	
    }
    

    Wenn ich eine 5 eintippe so wird mir bei der ausgabe eine fünf ausgegeben gebe ich eine 8 an so gibt es mir ebenfalls eine 8 aus.
    schön und gut wo soll der Sinn sein vom ganzen? 😕

    lg hasso



  • Hallo,

    zuersteinmal einige Anmerkungen zu dem Quelltext. Die Hauptfunktion main besitzt den Rückgabetyp int nicht void. Außerdem können die Parameter getrost weggelassen werden, da wir sie nicht verwenden.

    Des Weiteren ist die Verwendung von gets() gefählich. Siehe hierzu die Hilfeseite zu dieser Methode:

    BUGS
    Never use gets(). Because it is impossible to tell without knowing the
    data in advance how many characters gets() will read, and because
    gets() will continue to store characters past the end of the buffer, it
    is extremely dangerous to use. It has been used to break computer
    security. Use fgets() instead.

    Die Anweisung system("Pause"); hat nichts in dem C-Programm zu suchen. Zur Not bastel dir ein Skript, welches das Programm aufruft und anschließen das Fenster offen lässt.

    Einen Sinn in dem Quelltext kann ich ebenfalls nicht erkennen. Jedenfalls liefert er keine "ASCII-Tabelle".

    Möchtest du zu Ganzzahlen den ASCII-Wert ausgeben, dann machst du das wie folgt:

    #include <stdio.h>
    
    int main()
    {
            int i;
            for (i = 32; i < 127; ++i)
                    printf("%i %c\t", i, i);
    
            return 0;
    }
    

    Hier findet implizit eine Typumwandlung von int zu char statt. Wir könnten auch folgendes schreiben:

    printf("%i %c\t", i, (char)i);

    Grüße
    Martin



  • Du fragst nach dem Sinn der Funktion atoi?

    Die Funktion wandelt einen String, der lediglich aus Ziffern bestehen sollte,
    in eine Zahl um, mit der du dann rechnen kannst.

    Bei welcher Anwendung du atoi gebrauchen kannst, weiß ich nicht.

    Ich hoffe, du kannst mit meinem Post etwas anfangen.

    Gruß mcr



  • mcr schrieb:

    Du fragst nach dem Sinn der Funktion atoi?

    Die Funktion wandelt einen String, der lediglich aus Ziffern bestehen sollte,
    in eine Zahl um, mit der du dann rechnen kannst.

    Gibts das auch anderstrum, das ich ne Zahl zu nem String mache?? Gruß



  • floorball92 schrieb:

    mcr schrieb:

    Du fragst nach dem Sinn der Funktion atoi?

    Die Funktion wandelt einen String, der lediglich aus Ziffern bestehen sollte,
    in eine Zahl um, mit der du dann rechnen kannst.

    Gibts das auch anderstrum, das ich ne Zahl zu nem String mache?? Gruß

    ja,

    zum Beispiel damit:

    int zahl = 10;
        char array[1024];
        sprintf(array, "%d", zahl);
    

    Gruß mcr



  • also sag mir wenn ich mich irre, aber muss es net :

    int zahl = 10;
    char array[1024];
    sprintf(array, "%i", zahl);

    heißen??



  • beides ist möglich.


Anmelden zum Antworten