Referenz an Funktion



  • hallo,

    ich versuche einen wert einer variable durch eine funktion zu verändern.
    innerhalb der funktion soll dann entschieden werden, ob der string beibehalten oder verändert werden soll. die veränderung der übergebenden charvariable soll außerhalb der funktion gültig sein.

    int Stringbox (unsigned menu_nummer, char string[])
    {
    	char tmp_string[21];
    	sprintf(tmp_string, "%-20s", string);
    
    	tmp_string[0] = 'X';
    	tmp_string[1] = 'X';
    
    	printf("tmp_string: %s\n", tmp_string);
    
    	if (menu_nummer == 1)
    		*string = *tmp_string;
    
    	printf("string: %s\n", string);
    
    	return(menu_nummer);
    }
    
    int main ()
    {
    	int uebergabe;
    
    	char wert[21] = "testtesttesttest";
    
    	uebergabe = Stringbox(1, &wert);
    	printf("main: %s\n", wert);
    
    	exit(0);
    }
    

    hierbei wird jedoch nur der erste buchstabe des string verändert, was hab ich da faslch gemacht, bzw. wie könnte ich mein vorhaben realisieren??? 😕

    cu...



  • hab es hinbekommen!

    int Stringbox (unsigned menu_nummer, char *string)
    {
    	char tmp_string[21];
    	sprintf(tmp_string, "%-20s", string);
    
    	tmp_string[0] = 'X';
    	tmp_string[1] = 'X';
    
    	printf("tmp_string: %s\n", tmp_string);
    
    	if (menu_nummer == 1)
    		strcpy(string,tmp_string);
    
    	printf("string: %s\n", string);
    
    	return(menu_nummer);
    }
    
    int main ()
    {
    	int uebergabe;
    
    	char wert[21] = "testtesttesttest";
    
    	uebergabe = Stringbox(1, wert);
    	printf("main: %s\n", wert);
    
    	exit(0);
    }
    

    zum funktionsaufruf:
    wann sollte ich die variable mit &wert an eine funktion übergeben?
    es geht ja mit und ohne "&".



  • & gibt dir die adresse von etwas. da strings arrays sind und arrays gerne in zeiger convertieren (also adressen), brauchst du das & bei allem ausser wenn du den inhalt eines strings aendern willst.

    greif dir ein tutorial ueber pointer.



  • Nehme zurueck - Stuss geschrieben



  • Oder man schaut bei Google unter:
    call by reference...,call by value... 😉


Anmelden zum Antworten