struct mit Funktionen



  • Hi!
    Ich möchte eine Liste von Büchern machen und dies via Funktion wiedergeben. Das ganze hab ich mir so gedacht:

    struct Book
    {
       char title[32];
       char author[32];
    };
    
    void printBook(const Book *pBook);
    
    struct Book books[6] = {{"Winnetou", "Karl May"},{"1984", "George Orwell"},{"Krieg und Frieden", "Leo Tolstoi"},{"C For Dummies", "Dan Gookin"},{"Practical C Programming", "Steve Oualline"}};
    printBook();
    
    void printBook(const Book *pBook)
    {	
    	int i=0;
    	for(i=0;i<5;i++)
    		printf("'%s'von %s\n", books[i].title, books[i].author);
    
    	return 0;
    }
    

    Leider hab ich total den überblich verloren...
    also das printf funktioniert super, wenn ich es NICHT in einer Funktion habe. Mit Funktion klappts leider nicht! 😞

    Vielen Dank schon mal für eure Tipps!
    Marvin



  • Dein Parameter in printBook heisst pBook.
    In printf willst du aber books ausgeben.
    Da sollte doch schon der Compiler schreien.



  • Ancheindend ist books eine globale Variable bei dir, definier sie lokal. Mit der Parameterübergabe liegst du doch schon richtig. Ich würde neben dem Zeiger auf das Array auch dessen Größe mit übergeben:

    void printBook(const Book *pBook, size_t size);
    

    Und innerhalb der Funktion dann natürlich auch auf pBook, nicht auf books zugreifen.
    Außerdem hat printBooks keinen Rückgabewert, das return 0; ist fehl am Platze.



  • m4rvin schrieb:

    Leider hab ich total den überblich verloren...

    Das merkt man.
    Du greifst in deiner Funktion überhaupt nicht auf den Parameter zu. Was soll die Funktion dann bringen?


Anmelden zum Antworten