**argv an funktion übergeben



  • Hi,

    ich hab folgendes Problem:

    int eingabe(char argv){
      printf("testausgabe %s", argv[1]);
      return 1; /* Alles Paletti */
    }
    
    int main (int argc, char **argv) {
    
      if(eingabe(argv)){
        printf("auswahl der berechnung!!");
      } else {
         ausgabeHilfe();
      }
    
      printf("test: %s\n",argv[1]);
      return 0;
    }
    

    Dieses **argv (doppeltes referenzieren??) habe ich irgendwie nicht verstanden, bzw ich weiss nicht wie ich sowas einer anderen funktion übergeben kann.
    In der Main selber kann ich darauf ja ganz einfach zugreifen. Nur übergeben kommt folgende Meldung vom Compiler: 1 Argument von >>eingabe<< erzeugt Ganzzahl von Zeiger ohne Typkonvertierung.

    Da dachte ich, hey, Typkonvertierung. Mach ich mal nen (char) vor die Übergabe, aber hilft auch alles nichts.



  • argv ist laut Standard ein Pointer auf einen char*'s oder ein Array von char*(in jedem steht einer der Kommandozeilen-Parameter drin), den kannst du nicht einfach nach char uminterpretieren.
    Entweder du referenzierst den Wert in deiner main-Funktion und übergibst dann einzelne Elemente des Argumentstrings an Unterfunktionen - oder du übergibst die komplette Struktur, die du dann aber als "char**" abholen mußt.



  • Ach soooo,

    alles klar. FUnktioniert jetzt. Ich sollte mir darüber liebe rnochmal was durchlesen. Hat jemand dazu gute Erklärungen?


Anmelden zum Antworten