GTK-3 Problem: atof() und strtof() wandeln nicht mehr zuverlässig



  • Hallo zusammen,

    ich habe mir ein Programm geschrieben, welches mir ein Textfile einliest und daraus Parameter in einen vector speichert:

    vector<float> readParameters(string filename){
    	vector<float> params(20);
    
    	fstream fi;
    	char cstring[512];
    	string param;
    
    	fi.open(filename.c_str(), ios::in);
    	size_t j = 0;
    	while(!fi.eof()){
    		fi.getline(cstring,sizeof(cstring)); //Read Line
    		if(cstring[0]=='#') continue; //Ignore Comment-Lines
    		size_t start=0;
    		size_t stop=0;
    		for(size_t i=0; i<512; i++){
    			if(cstring[i]=='=') start=i; //Startindex of Parameter-Value
    			if(cstring[i]==';'){ //Stopindex of Parameter-Value
    				stop=i;
    				break;
    			}
    		}
    
    		for(size_t i=start+1; i<stop; i++){
    			param.append(&cstring[i],1); //cut and transform Parameter-Value to String
    		}
    		cout << param << " - "; //param enthält noch den richtigen Wert, z.B. "0.015"
    		params[j++] = strtof(param.c_str(),NULL); //transform string to float-number, atof geht hier auch nicht
    		cout << params[j-1] << "\n"; //Hier ist nur noch ein Integer
    		param = ""; //reset dummy;
    	}
    	fi.close();
    	return params;
    }
    

    Das funktioniert von der Konsole auch soweit gut, nur wenn ich diese Funktion mittels:

    g_signal_connect(button, "clicked", G_CALLBACK(simulate), NULL);
    

    aufrufe (sie ist Teil der Funktion simulate()), funktioniert die umwandlung mit strtof() oder atof() nichtmehr richtig. Die Strings werden in einen Integer umgewandelt. Der rest der Funktion scheint soweit korrekt durchzulaufen, und wenn ich sie ohne / vor dem gtk Sachen durchlaufen lasse, funktioniert auch alles wie es soll.


Log in to reply