atoi array in float



  • Hallo wollte mit diesen kleinen Programm eine Variable von array in float umwandeln und dann ausgeben haut aber nicht hin. Die float gibt er mir nur vorm komma aus. Hat jemand ne Ahnung?

    #include "stdafx.h"
    #include <iostream> 
    using namespace std; 
    
    int main() 
    {   
    	char ar[4];
    	ar [0]='1';
    	ar [1]='.';
    	ar [2]='1';
    	ar [3]='1';
    
    	float d;
    	d=atoi(ar);
    
    	cout << ar << endl; 
    	cout << d << endl; 
    	fflush(stdin);
    	getchar();
    
    }
    


  • Grad gesehen sogar bei

    float d;
    	d=atoi(4.88);
    
    	cout << d << endl; 
    	fflush(stdin);
    	getchar();
    

    gibt er nur die 4 an



  • atoi steht für ascii (oder war es array?) to int.
    Soweit ich weiß gibt es in der C-Standard-Lib aber auch eine Funktion atof, welche den ascii/(Array) Wert in einen float umwandelt.

    Trotzdem würde ich in diesem Fall lieber stringstreams verwenden. (siehe C++-FAQ: Einmal Zahl nach String und zurück).

    Caipi



  • Cool danke, hat mit atof geklappt. Mit Strings ist ungünstig da ich mir aus einer text Datei Zahlen hole und diese speichern muss. Mit Arrays klappt das ganz gut bei Strings hätte ich da keine Ahnung wie man aus "ass 1.44ms"
    die 1.44 holen könnte. Na gut auf jeden Fall danke jetzt haut es hin 🙂



  • Habe jetzt noch ein Problem will bei einem Array Feld den Speicher leeren ohne es durch eine For schleife zu jagen. Bin dabei auf den Befehl ZeroMemory() gestossen. Haut aber leider nicht so hin wie ich erwartet habe oder besser gesagt gar nicht. Weiß nicht ob ich den Befehl falsch eingesetzt habe oder ob er hier gar nicht geht.
    Vielleicht hat ja von euch jemand Ahnung oder eine bessere Idee

    #include "stdafx.h"
    #include <iostream> 
    using namespace std; 
    
    int main() 
    {   
    	char ar[4];
    	ar [0]='1';
    	ar [1]='.';
    	ar [2]='1';
    
    	float d;
    	d=atof(ar);
    	ZeroMemory(ar); 
    
    	cout << ar << endl; 
    	cout << d << endl; 
    	fflush(stdin);
    	getchar();
    
    }
    


  • Hallo,

    1. ZeroMemory erwartet als 2. Parameter die Größe des Speicherbereiches
    hier also ZeroMemory(ar,4);
    2. die Funktion ist kein Standard C++. Hier wäre memcpy angebracht (verwendet ZeroMemory wahrscheinlich auch).
    3. Normalerweise:
    Neue Frage - neuer Thread

    Ciao



  • Ok und wie setze ich es ein
    funktioniert weder so memcpy(ar) noch so memcpy(ar,4)?



  • Ich glaube er meinte memset().



  • Entschuldigung hab mich da verschrieben. Die Funktion die du hier brauchst heißt memset.
    Hier also
    memset(ar,0,4);
    Hast du keine Hilfedatei?



  • Caipi schrieb:

    atoi steht für ascii (oder war es array?) to int.
    Soweit ich weiß gibt es in der C-Standard-Lib aber auch eine Funktion atof, welche den ascii/(Array) Wert in einen float umwandelt.

    Trotzdem würde ich in diesem Fall lieber stringstreams verwenden. (siehe C++-FAQ: Einmal Zahl nach String und zurück).

    Caipi

    des a steht für alphanumeric, aber des mit dem int passt voll und ganz 😃



  • Danke euch allen für die Hilfe haut mit "memset(ar,0,4);" hin, bin jetzt wieder ein ganzes Stück weiter. Habe schon Hilfe aber finde viele Sachen nicht, suche auch in google aber hier finde ich auch nicht alles. Also noch mal vielen dank 😉


Anmelden zum Antworten