1. Liebe Forumsgemeinde,

    aufgrund der Bestimmungen, die sich aus der DSGVO ergeben, müssten umfangreiche Anpassungen am Forum vorgenommen werden, die sich für uns nicht wirtschaftlich abbilden lassen. Daher haben wir uns entschlossen, das Forum in seiner aktuellen Form zu archivieren und online bereit zu stellen, jedoch keine Neuanmeldungen oder neuen Kommentare mehr zuzulassen. So ist sichergestellt, dass das gesammelte Wissen nicht verloren geht, und wir die Seite dennoch DSGVO-konform zur Verfügung stellen können.
    Dies wird in den nächsten Tagen umgesetzt.

    Ich danke allen, die sich in den letzten Jahren für Hilfesuchende und auch für das Forum selbst engagiert haben. Ich bin weiterhin für euch erreichbar unter tti(bei)pcwelt.de.
    Dismiss Notice

C Anfängerproblem

Discussion in 'Programmieren' started by ask_child, Oct 16, 2008.

Thread Status:
Not open for further replies.
  1. ask_child

    ask_child ROM

    Hallo, ich grüße euch.
    Wir haben seit Woche mit der Programmiersprache C angefangen. Da ich noch ein Newbie bin, bitte ich euch dringend um Hilfe:

    [edit]Aufgabe 1[/edit]

    [edit]
    Für diese Aufgabe legen Sie bitte die folgenden drei Dateien an: p1 main.c, p2 main.c, printfunctions.c

    a. Definieren Sie in printfunctions.c einige (mindestens drei verschiedene) Funktionen zur Ausgabe irgendwelcher
    Texte oder Werte auf der Konsole. Die Datei printfunctions.c soll keine main(...)-Funktion
    enthalten.

    b. Definieren Sie in p1 main.c und p2 main.c jeweils eine main(...)-Funktion, in der (beliebige) Aufrufe
    von Funktionen aus printfunctions.c vorkommen.

    c. Schreiben Sie ein Makefile, das es möglich macht, durch einen Aufruf entweder nur Programm 1 (make
    p1), nur Programm 2 (make p2) oder beide Programme (make all) zu übersetzen. Achten Sie vor allem
    darauf, die Abhängigkeiten f¨ur die verschiedenen Ziele korrekt zu definieren.

    d. Was passiert, wenn Sie zwei mal direkt hintereinander (make all) aufrufen?

    e. Öffnen Sie die Datei p1 main.c, fügen Sie an geeigneter Stelle eine weitere Konsolenausgabe hinzu und
    speichern Sie die Änderungen. Was passiert, wenn Sie jetzt erneut ein (make all) aufrufen?

    f. Ändern Sie das Compiler-Aufruf-Makro in Ihrem Makefile so, dass beim Übersetzen der Module alle Warnungen
    ausgegeben werden. Falls Warnungen ausgegeben werden: Um welche Warnungen handelt es sich,
    und worin liegen jeweils die Ursachen? Verändern Sie die Quelldateien so, dass keine einzigeWarnung mehr
    ausgegeben wird.
    [/edit]

    Ich verwende Cygwin und GCC Compiler ver.3.4.4

    Die a) und b) habe ich wie folgt geschafft (hoffe ich)



    printfunctions.c
    Code:
    
    #include <stdio.h>
    #include <stdlib.h>
    
    #include "printfunctions.h"
    
    int ausgabe1()  {
      return Eins;  
    }
    
    int ausgabe2() {
      char c = '2';
      printf("%c. Ausgabe\n", c);
      return EXIT_SUCCESS;  
    }
    
    int ausgabe3() {
      char text[] = "3. Ausgabe";
      printf(text);
      return EXIT_SUCCESS;
    }
    
    int quadrat(int faktor)  {
      int produ = faktor * faktor;  // produkt
      return produ;
    }
    

    Header-Datei

    printfunctions.h

    Code:
    #ifndef printfunctions
    #define printfunctions
    
    #define Eins (1)
    
    int ausgabe1();
    int ausgabe2();
    int ausgabe3();
    int quadrat(int faktor);
    
    #endif
    

    p1_main.c

    Code:
    #include <stdio.h>
    #include <stdlib.h>
    
    #include "printfunctions.h"
    
    int main()  {
        printf("Aufruf der Funktion ausgabe1() aus printfunctions.c : %i. Ausgabe \n", ausgabe1());
        printf("Aufruf der Funktion ausgabe2() aus printfunctions.c : ");
        ausgabe2();
        printf("\n\n");
        return EXIT_SUCCESS;
    }
    

    p2_main.c

    Code:
    #include <stdio.h>
    #include <stdlib.h>
    
    #include "printfunctions.h"
    
    int main()  {
        int iEingabe, iErgebnis;
        
        printf("Dieses Programm berechnet das Quadrat einer ganzen Zahl.\n");
        printf("Bitte geben Sie eine ganze Zahl ein: ");  
        scanf("%i", &iEingabe);  // Einlesen der Eingabe(n) mit &-Operator
        iErgebnis = quadrat(iEingabe);
        printf("Das Quadrat von %i ist %i\n\n", iEingabe, iErgebnis);
        return EXIT_SUCCESS;
    }
    

    Ich habe mit dem gcc so kompilieren lassen:

    [edit]
    gcc -g -Wall -o p1 p1_main.c printfunctions.c

    gcc -g -Wall -o p2 p2_main.c printfunctions.c
    [/edit]



    Aber die makefile kriege ich leider nicht hin. Meine Makefile habe ich so gemacht:

    makefile

    Code:
    # Makefile
    
    CFLAGS = -g -Wall
    CC = gcc
    
    p1: p1_main.c printfunctions.c
        $(CC) $(CFLAGS) -o p1 p1_main.c printfunctions.c
    
    p2: p2_main.c printfunctions.c
        $(CC) $(CFLAGS) -o p2 p2_main.c printfunctions.c
    
    Das wäre meine makefile. Aber wenn ich in der Konsole den Befehl

    [edit]make p1[/edit]

    eingebe, erhalte ich nur die Fehlermeldung:

    [edit]***missing separator[/edit]


    Ich hoffe, ihr könnt mir helfen


    Viele Grüße
     
  2. darktrym

    darktrym ROM

    Im Grunde alles richtig, bis auf die Leerzeichen anstelle der Tabulatoren in den beiden Regeln.
     
  3. VB-Coder

    VB-Coder Megabyte

Thread Status:
Not open for further replies.

Share This Page