Segmentation fault, wieso?



  • Hallo Zusammen,
    ich bin grade dabei ein Spiel mit openGL zu programmieren, alles ist gut, bis auf eine kleine funktion. Ich habe ein funktion der float in int verwandelt, und int in char, das ist am ende nötig. Für den Screen Mode muss ich in eine variabel folgendes schreiben:

    "X x Y : Depth @ Rate"

    Es gibt 4 Variabeln, die müssen zusammen gefügt werden. Das habe ich mit strcpy und strcat "gelöst", jedoch krieg ich ein Pronlem bei der ausführung. "Segmentation fault".

    Ich weiß nicht wieso, hab lange gesucht, ich habe einfach ein blackout 😉

    hier der code:

    int float_int(float input) {
    	float i;
    	int output=0;
    	for(i=0;i<=input;i++) {
    	  output++;
    	}
    	return output-1;
    }
    
    char *float_char(int input) {
    	return (char*)input+48;
    }
    
    int main (int argc, char **argv) {
    	char *GameMode;
    ....
      	strcpy(GameMode,float_char(float_int(setting.screen_resultion.y)));
     	strcat(GameMode,"x");
       	strcat(GameMode,float_char(float_int(setting.screen_resultion.x)));
      	strcat(GameMode,":");
       	strcat(GameMode,float_char(float_int(setting.screen_resultion.depth)));
      	strcat(GameMode,"@");
       	strcat(GameMode,float_char(float_int(setting.screen_resultion.rate)));
    ....
    		glutGameModeString(GameMode); 
    ....
    }
    


  • was ist das denn? std::stringstream ist zum Umformen in string zuständig und nen float in nen int kannst du mit nem einfachen cast ... aber du verlierst halt die nachkomme stellen ... und warum? seh da nicht den Grund ... kannst ja auch in den stringstream reinhauen ...



  • Naja sagen wir mal so, ich muss einfach einen float an einem char anhängen, mehr nit, gibt es eine einfacheren lösung?



  • #include <string>
    #include <sstream>
    
    int main () 
    {
        std::stringstream ss;
        ss << setting.screen_resultion.y << "x" << setting.screen_resultion.x << ":" << setting.screen_resultion.depth << "@" << setting.screen_resultion.rate;
        std::cout << ss.str() << std::endl;
    
        glutGameModeString(ss.str().c_str());
    }
    

    Aber bist du dir sicher das die glut Funktion das so haben will?



  • (D)Evil schrieb:

    #include <string>
    #include <sstream>
    
    int main () 
    {
        std::stringstream ss;
        ss << setting.screen_resultion.y << "x" << setting.screen_resultion.x << ":" << setting.screen_resultion.depth << "@" << setting.screen_resultion.rate;
        std::cout << ss.str() << std::endl;
    
        glutGameModeString(ss.str().c_str());
    }
    

    Aber bist du dir sicher das die glut Funktion das so haben will?

    Ja!

    Glut möchte es so haben:

    1024x768:32@60

    oder so ähnlich



  • Hey danke es geht ja 😉


Anmelden zum Antworten