text-string einer funktion übergeben



  • hallo mal wieder,

    ich habe hier folgendes problem. durch den user soll eine eingabe getätigt werden.
    der eingegebene Textstring soll in einer funktion überprüft werden. Beim jetzigen beispiel auf leerzeichen weil ich die eingabe einer homepage überprüfen will. user gibt also ne url ein, die wird in einer fkt. überprüft und gegebenenfalls korrigiert zurückgegeben werden.

    hier mal der Quelltextausschnitt:

    gotoxy(15,12);
    	printf("Homepage: ");
    	gets(cEingabe);
    	cCheck[1000] = stringcheck(cEingabe[1000]);
    .
    .
    .
    .
    .
    
    char stringcheck(char string[1000])
    {
    	for(int x=0, count=0; x<strlen(string); x++)
    	{
    		if(string[x+count]==' ')
    		{
    			count++;
    			string[x]=string[x+count];		
    		}
    		else
    		{
    			string[x]=string[x+count];
    		}
    	}
    	if(count!=0)
    	{
    		gotoxy(15, 25);
    		printf("Die Url wurde angepasst: %s", string);
    	}
    	return string[1000];
    }
    

    nicht wegen der stringlänge fragen soll später noch für andere eingaben genutzt werden.

    also die Funktion ansich funktioniert, aber wie kann ich den wert der funktion geben und wieder einer ander funktion geben? das klappt irgendwie nicht...

    danke schonmal im vorraus für die hilfe 😞



  • Dieser Thread wurde von Moderator/in SideWinder aus dem Forum DOS und Win32-Konsole in das Forum ANSI C verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • @Rille: Ich vermute mal, dass du das Array zurückgeben willst. Dazu

    1. Das ist nicht wirklich nötig, da Arrays als Zeiger auf das erste Element an Funktionen übergeben werden => In der Funktion änderst du das übergebene Array.
    2. Du kannst kein Array zurückgeben. Sehr wohl aber einen Zeiger darauf. Bei einem 1dimensionalen Array kannst du dir außerdem zunutze machen, dass (wie oben erwähnt) ein Array implizit in einen Zeiger auf sein erstes Element konvertiert wird. => Du kannst z.B. Folgendes machen:
    #include <stdio.h>
    
    char* url_check(char rhs[1000])
    {
        // mach was mit arr
        return arr; // arr (=&arr[0]) zurückgeben. D.h. die Adresse des ersten Elements zurückgeben.
    
    int main()
    {
       char arr[1000] = { "Hallo C!" };
       char* p_arr = func(arr);
       // p_arr zeigt jetzt auf arr... (Merke: p_arr _zeigt_ auf arr!).
    
       return 0;
    }
    

    Gruß Caipi



  • danke Caipi,
    ich werds gleich mal ausprobieren 🙂



  • hallo nochmal,

    also ich habs jetzt mal versucht aber es klappt irgendwie immernoch nicht...

    hier der Fehler:

    d:\C-Programme\Passwordmanager\Passwordmanager.cpp(180) : error C2664: 'stringcheck': Konvertierung des Parameters 1 von 'char [1000]' in 'char' nicht möglich

    ich habe es wie folgt gemacht:

    char* stringcheck(char string);
    
    int main()
    {
    .
    .
    .
    }
    
    int newpass(void)
    {	
    	char cEingabe[1000];
    	char* cCheck;
    .
    .
    .       ///hier kommt der fehler
    	cCheck = stringcheck(cEingabe); //hier ruf ich die Funktion auf
    .
    .
    .
    
    char* stringcheck(char string[1000])
    {
    	for(int x=0, count=0; x<strlen(string); x++)
    	{
    		if(string[x+count]==' ')
    		{
    			count++;
    			string[x]=string[x+count];		
    		}
    		else
    		{
    			string[x]=string[x+count];
    		}
    	}
    	if(count!=0)
    	{
    		gotoxy(15, 25);
    		printf("Die Url wurde angepasst: %s", string);
    	}
    	return string;
    }
    

    Hier nochmal der von mir veränderte Quellcode, ich stell mich glaub ich einfach nur doof an, aber es funktioniert nicht.

    Wäre sehr nett wenn ihr mir nochmal helfen könntet 😃



  • ne passt schon habs gefunden hab oben beim Prototypen vergessen aus string string[1000] zu machen...


Anmelden zum Antworten