Neu mit Funktionen in C

OP #6521530
Lesenswert?

Moin ich hab hier grad mal diesen Code geschrieben, wo ich mit 
Funktionen arbeite in C.
Ich habe folgendes Problem ich muss hier, doch eigentlich noch
int eingabeDatum();  einfügen. Meines Wissens nach muss dass in die 
Funktion eingabeDatum einfügen, aber wenn ich das in die Funktion 
schreibe wird der Code nicht ausgeführt bzw. gibt der Compilier mir 
fehler aus !

Hier mein Code:
#include <stdio.h>

void eingabeDatum(void) {
    int eingabeDatum();
    printf("\nBitte geben Sie das Zulassungsdatum ein (in der Form 
tt.mm.jj:");
    scanf("%d", &eingabeDatum);
}


int main () {
    eingabeDatum();
    return 0;
}
#6521547
Lesenswert?

Du meinst eher das:
1
#include <stdio.h>
2

3
void eingabeDatum(void) {
4
    int eingabe;
5

6
    printf("\nBitte geben Sie das Zulassungsdatum ein (in der Form tt.mm.jj:");
7
    scanf("%d", &eingabe);
8
    
9
    printf("Eingegeben wurde: %d\n", eingabe);
10
}
11

12

13
int main () {
14
    eingabeDatum();
15
    return 0;
16
}

Aber so wird das nicht funktionieren...da er nur die erste Zahl 
einliest, alles nach dem ersten Punkt wird ignoriert.

Da du ja auch in einen Integer Variable einliest.

Sonst:
1
#include <stdio.h>
2

3
void eingabeDatum(void) {
4
    char eingabe[9];   // 9 weil 8 Zeichen + abschliessende '\0'
5
    
6
    printf("\nBitte geben Sie das Zulassungsdatum ein (in der Form tt.mm.jj:");
7
    scanf("%s", eingabe);
8
    
9
    printf("%s\n", eingabe);
10
}
11

12

13
int main () {
14
    eingabeDatum();
15
    return 0;
16
}


Oder mit mehreren Variablen
1
void eingabeDatum(void) {
2
    int tag, monat, jahr;
3
    
4
    printf("\nBitte geben Sie das Zulassungsdatum ein (in der Form tt.mm.jj:");
5
    scanf("%d.%d.%d", &tag, &monat, &jahr);
6
    
7
    printf("%d.%d.%d", tag, monat, jahr);
8
}
OP #6521565
Lesenswert?

> Aber so wird das nicht funktionieren...da er nur die erste Zahl
> einliest, alles nach dem ersten Punkt wird ignoriert.
>
ja hast recht, aber ich Brauche später sowieso nur die Jahreszahl, da 
ich das Alter berechnen möchte.

Wie kann ich denn es so machen dass er nur die Jahreszahl betrachtet und 
Datum und MOnat nicht ?
Mit mehreren VAriablen müsste ich dass codieren oder ?
#6521572
Lesenswert?

Adam P. schrieb:
> char eingabe[9];   // 9 weil 8 Zeichen + abschliessende '\0'
>
>     printf("\nBitte geben Sie das Zulassungsdatum ein (in der Form
> tt.mm.jj:");
>     scanf("%s", eingabe);

Aber wehe, jemand kommt auf die Idee, ein Zeichen mehr einzugeben.

Wado U. schrieb:
>> Aber so wird das nicht funktionieren...da er nur die erste Zahl
>> einliest, alles nach dem ersten Punkt wird ignoriert.
>>
> ja hast recht, aber ich Brauche später sowieso nur die Jahreszahl, da
> ich das Alter berechnen möchte.
>
> Wie kann ich denn es so machen dass er nur die Jahreszahl betrachtet und
> Datum und MOnat nicht ?

Warum bittest du den Benutzer überhaupt, Tag und Monat einzugeben, wenn 
du die danach sowieso verwerfen willst?
Beitrag #6521580 wurde von einem Moderator gelöscht.
#6521652
Lesenswert?

Wado U. schrieb:
> int eingabeDatum();

Das ist eine Funktionsdeklaration.
- Funktion wegen der runden Klammern.
- Deklaration, weil kein Code kommt sonder mit ; abgeschlossen wird

Diese braucht man, bevor die Funktion das erste mal aufgerufen wird.

Eine Definition (also der Funktionscode) ist auch gleichzeitig eine 
Deklaration. Da du die Funktion vor dem Aufruf in main() definierst, ist 
die extra Deklaration nicht nötig.

Und C ist nicht Pascal. Der Rückgabewert hat nicht den Funktionsnamen.
Gast #6522951
Lesenswert?

Das ist schon der dritte Post mit stümperhaftem Anfängercode.
Wie wäre es, erst einmal ein Lehrbuch durchzuarbeiten. Die Beispiele 
darin auszuprobieren und Teile einfach mal im Einzelschritt sich 
anzuschauen.

Generation von Programmierern haben es so gelernt. Nur mit einem Buch. 
Ganz ohne Internet.

Einfach immer 5 fehlerhafte Zeilen zu posten, damit kommt man nicht 
weiter.
Und die Leute hier sind irgendwann von Anfängern, die sich nicht mal 
selber helfen können, genervt.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren