Funktion einbinden?



  • Hey Leute, also da wir in einem Team arbeiten und ich meine Funktionen mit

    int main(int argc, char *argv[])
    

    erstellt habe treten jetzt einige fehler bei der Implementierung auf. Jetzt kommt wenn wir die Funktionen einbinden wollen : too few arguments to function 'cat' (also Beispiel ist Funktion cat)

    Der Quellcode um die Funktionen einzulesen sieht so aus:

    http://paste.pocoo.org/show/157168/

    cat Funktion sieht so aus:

    int cat(int argc,char *argv[]) 
    {
       int c;
       FILE *datei;
    
       datei=fopen(argv[1], "r");
       if(datei != NULL) 
       {
          while( (c=fgetc(datei)) != EOF)
             putchar(c);
       }
       else 
       {
          printf("Konnte Datei nicht finden bzw. öffnen!\n");
          return EXIT_FAILURE;
       }
       fclose(datei);
       exit(0);
    }
    

    Kann mir da jemand weiter Helfen wie ich das lösen kann?



  • Elec schrieb:

    Jetzt kommt wenn wir die Funktionen einbinden wollen : too few arguments to function 'cat' (also Beispiel ist Funktion cat)

    Liegt daran, dass es in dem langen Listing in Zeile 175 ohne Parameter aufgerufen wird. In dem Listing kriegst du argc und argv gar nicht in die Finger, weil in Zeile 297 steht:

    int main()
    

    Elec schrieb:

    da wir in einem Team arbeiten

    Mein Tip: behaupten, dass die anderen schuld sind.
    🙂



  • also sollte bei int main() dann das mit argc und argv rein oder wie?



  • Elec schrieb:

    also sollte bei int main() dann das mit argc und argv rein oder wie?

    Das hängt davon ab, was du vorhast. Ich hab das Listing nicht gelesen, sondern nur die beiden betreffenden Zeilen. Deine cat-Funktion braucht eigentlich nur einen Parameter, nämlich den Pfad zu der Datei. Kannst du also eigentlich so machen:

    int cat(char *path)
    

    Bleibt immer noch die Frage, woher das Programm den Pfad eigentlich wissen soll. Das musst du dir natürlich selbst überlegen.
    🙂



  • Naja dadurch hatte ich ja in meiner Funktion argv[1] benutzt da man so ./cat Pfad_zur_Datei angeben konnte



  • Elec schrieb:

    Naja dadurch hatte ich ja in meiner Funktion argv[1] benutzt da man so ./cat Pfad_zur_Datei angeben konnte

    Aber wenn du die main-Funktion nicht selbst schreibst, wird das wohl kaum hinhauen. 😉

    Noch ein Tip: beim Überfliegen des Listings sieht es so aus, als wäre der Pfad irgendwo in command enthalten (das dauerend in den selben Typ gecastet wird).
    🙂



  • Hey Leute, also wir sind schon weiter und die Funktionen eingebunden. Jetzt mal eine Frage zu ls
    Also wir können nur einmal ls machen und dann kommt immer "no such file or directory" also das sagt er bei der Funktion list.h bei uns bei scandir.

    Hier mal die beiden Quellcodes, einmal wo man befehle eingibt und einmal die list.h

    Quellcode: http://paste.pocoo.org/show/157588/
    list.h:

    void list(char *argv)
    {
    
        struct dirent **namelist;
        int n;
        int i;
    
        n = scandir(argv, &namelist, 0, alphasort);
    
        if (n < 0)
            perror("scandir");
        else 
        {
          for (i = 0; i < n; i++)
          {
    	printf("%s\n", namelist[i]->d_name);
          }
        }
    
        return;
    }
    


  • Frag die Unix-Leute, die wissen sowas.
    🙂


Anmelden zum Antworten