Anfängerproblem
-
Hallo liebe C-Community,
ich glaube ich stecke hier bei einem relativ simplen Problem fest, jedoch komm ich nicht weiter:
Der Compilter gibt immer die Fehlermeldung aus, dass meine beiden Funktionen undefiniert sind.
undefined reference to
eingabe' undefined reference to
ausgabe'Jedoch hat es keinen Rechtschreibfehler oder Ähnliches drin und der Syntax habe ich auch mehrmals kontrolliert...
Vielen Dank für jegliche Hilfe, Gruss Pilo.
Hier der Code:
-----------------------------------------------------------------------------#include <stdio.h>
#include <stdlib.h>
#include <string.h>struct person
{
int nummer;
char name[25];
char vorname[25];
int alter;
};void eingabe(struct person user, int nummerierung);
void ausgabe(struct person user);
int main()
{
struct person user[100];
int menue;
int nummerierung = 0;
int a;printf("Menue\n\n");
printf("[1] Neuen User eingeben\n");
printf("[2] Einen User anzeigen\n");
printf("[3] Programm beenden\n");
scanf("%d", &menue);
while(menue !=3)
{
switch(menue)
{
case 1:
eingabe(user[nummerierung], nummerierung);
nummerierung++;
break;
case 2:printf("Geben Sie bitte eine Kundennummer ein.");
scanf("%d", &a);
ausgabe(user[a]);
break;
case3:
return 0;
break;
default: printf("Bitte einer der angegebenen Zahlen eingeben!");
break;
}
}void eingabe(struct person user, int nummerierung)
{
int b;
user.nummer = nummerierung;
printf("Bitte geben Sie den Namen ein.");
fgets(user.name,25,stdin);
printf("Bitte geben Sie den Vornamen ein.");
fgets(user.vorname,25,stdin);
printf("Bitte geben Sie das Alter ein.");
scanf("%d",b);
user.alter = b;
}void ausgabe(struct person user)
{
printf("Nummer: %d\n", user.nummer);
printf("Name: %s\n", user.name);
printf("Vorname: %s\n", user.vorname);
printf("Alter: %d\n", user.alter);
}
}
-
Wenn du deinen Code einrücken würdest, dann würdest du auch sehen, was falsch wäre. Ich bin mal so nett:
#include <stdio.h> #include <stdlib.h> #include <string.h> struct person { int nummer; char name[25]; char vorname[25]; int alter; }; void eingabe(struct person user, int nummerierung); void ausgabe(struct person user); int main() { struct person user[100]; int menue; int nummerierung = 0; int a; printf("Menuenn"); printf("[1] Neuen User eingebenn"); printf("[2] Einen User anzeigenn"); printf("[3] Programm beendenn"); scanf("%d", &menue); while (menue != 3) { switch (menue) { case 1: eingabe(user[nummerierung], nummerierung); nummerierung++; break; case 2: printf("Geben Sie bitte eine Kundennummer ein."); scanf("%d", &a); ausgabe(user[a]); break; case3: return 0; break; default: printf("Bitte einer der angegebenen Zahlen eingeben!"); break; } } void eingabe(struct person user, int nummerierung) { int b; user.nummer = nummerierung; printf("Bitte geben Sie den Namen ein."); fgets(user.name, 25, stdin); printf("Bitte geben Sie den Vornamen ein."); fgets(user.vorname, 25, stdin); printf("Bitte geben Sie das Alter ein."); scanf("%d", b); user.alter = b; } void ausgabe(struct person user) { printf("Nummer: %dn", user.nummer); printf("Name: %sn", user.name); printf("Vorname: %sn", user.vorname); printf("Alter: %dn", user.alter); } }
Dein Code hat aber neben dem nun offensichtlichen noch viele weitere, ernste Probleme. Dreh mal die Warnoptionen deines Compilers auf Maximum. Behandle alle Warnungen so, als waren sie ein Fehler.
-
Hab nochmals jede Zeile abgesucht, aber ich kann da nichts entdecken...
Kannst du mir bitte nochmals nen Hinweis geben oder ev. einfach ne kleine Korrektur reinstellen?Gruss Pilo
-
Was soll die Klammer in Zeile 67 machen?
-
OMG... alle Funktionen in der main Funktion geschrieben... Das habe ich echt nicht mehr so genau kontrolliert, da ich von der Fehlermeldung geschlossen habe, dass irgendwas an den Funktionen falsch ist.
Vielen Dank für die Hilfe!
Gruss Pilo
-
Pilo schrieb:
OMG... alle Funktionen in der main Funktion geschrieben... Das habe ich echt nicht mehr so genau kontrolliert, da ich von der Fehlermeldung geschlossen habe, dass irgendwas an den Funktionen falsch ist.
Da hilft es, die Fehlermeldungen auch zu verstehen. "Undefined reference" bedeutet, dass der Linker eine Funktion nicht finden kann. Die möglichen Ursachen sind entweder, es gibt diese Funktion nicht, oder der Binärcode der aus dieser Funktion erzeugt wurde, kann vom Linker nicht gefunden werden. Letzteres ist hier von vornherein ausschließbar, da nur eine Übersetzungseinheit vorliegt.