return char



  • hallo wie kann ich ein char array zurueckgeben?

    void write()
    {
    	FILE *datei = fopen("datei.txt", "a+");
    
    	fprintf(datei, "%s", user());
    
    	fclose(datei);
    }
    
    char user()
    {
    	char computer_name[255];
    	DWORD size = 255;
    
    	GetComputerName(computer_name, &size);
    
    	return computer_name;            //was hier machen, so geht es nicht...
    }
    


  • Du musst char* statt char zurückgeben, aber so wie du dir das vorstellst funktioniert das sowieso nicht.

    computer_name ist lokal zur Funktion user, wird also am Ende dieser gelöscht. Der Zeiger den du zurückgibst zeigt daraufhin ins Nirvana.

    Du musst den Speicher schon vorher anlegen:

    void write ()
    {
        ...
        char computer_name [256];
        fprintf(datei,"%s",getUser(computer_name,256));
        ...
    }
    
    void getUser (char* computerName, DWORD size)
    {
        GetComputerName(computerName,&size);
    }
    

    Wobei man sich dann fragen könnte ob es überhaupt etwas bringt einen einzelnen Funktionsaufruf auszulagern.

    MfG SideWinder


Anmelden zum Antworten