String Array Übergabe an Funktion, wie gehts?



  • Hallo Leute.
    Sorry für die völlig verblödete Frage,aber ich muss glaub mal frische Luft schnappen gehen, ich komm nicht weiter.

    Ich möchte lediglich ein statisches array einer funktion übergeben:

    Prototyp:

    void make_ownip(char*);
    

    Funktion:

    void CSocket::make_ownip(char* arr)
    {
    
    	...
    
    }
    

    Aufruf:

    [b]char ip_array[10][20];[/b]
    	char ip_buffer[1024];
    
    	zaehl=3;
    
    	do{
    		strcpy(ip_array[ip_zaehl],argv[zaehl]);
    		zaehl++;
    		ip_zaehl++;
    	}while (argv[zaehl]!=NULL);
    
    	//Port zuweisen
    	mySock.makePort(argv[2]);//Port zuweisen
    
    	[b]mySock.make_ownip(ip_array);[/b]
    

    Wenn ich das Array übergeben müsste das doch die Adresse des ersten ZEichens im Array sein oder?
    Wo ist denn mein völlig verblödeter Denkfehler?
    Hat jemand ne Idee?
    Danke und grüße Mondmann



  • Hallo,

    Du bist im falschen Forum, aber probiers mal mit

    void make_ownip(char arrayParameter[][20]);



  • Mondmann schrieb:

    Wo ist denn mein völlig verblödeter Denkfehler?
    Hat jemand ne Idee?

    Der Denkfehler ist, daß du kein eindimensionales Array hast, sondern ein zweidimensionales - und das ist nicht kompatibel zu einem nackten Zeiger auf char. Entweder du stellst die Funktion so um, daß sie auch ein 2D-Array entgegennimmt oder du übergibst einen einzelnen Eintrag aus deinem Array ( mySock.make_ownip(ip_array[index]); ).



  • Dieser Thread wurde von Moderator/in Jochen Kalmbach aus dem Forum C++/CLI mit .NET in das Forum C++ verschoben.

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

    Dieses Posting wurde automatisch erzeugt.



  • Hi,

    ich würde folgende Variante vorziehen:
    Prototyp (falls make_ownip() die IPS nur lesen muss):

    void make_ownip(vector<string> const&);
    

    Aufruf:

    vector<string> ip_array;
    
       for(size_t zaehl=3; zaehl<=argc; ++zaehl)
          ip_array.push_back(argv[zaehl]));
       }
    
       //Port zuweisen
       mySock.makePort(argv[2]);//Port zuweisen
    
       mySock.make_ownip(ip_array);
    

    Damit hast Du nicht nur einfach und übersichtlich "Dein" Problem gelöst, sondern das Ganze auch dynamisiert - denn bei Deinem Code geht das Programm ja baden, sobald jemand mehr als 10+2 Parameter übergibt oder einer von denen länger als 19 Zeichen ist ....

    Gruß,

    Simon2.


Anmelden zum Antworten