Wallnussfolie
Grünschnabel
Hallo liebe Programmierfreunde,
ich bin gerade dabei, ein Wörterbuch mittels einer verketteten Liste zu Programmieren. Nun bin ich auf ein kleines Problem gestoßen, was mich gerade an den Rand der Verzweiflung bringt.
In der Funktion eintrag_einfuegen() umgeht mein Programm einfach beide fgets()-Aufrufe, es schreibt einfach nur die Ausgaben der beiden printf's untereinander und warte dann auf eine Eingabe, wenn ich dann etwas eingegeben habe, verlässt es die Funktion und geht in den do-while Loop zurück. Ich komme einfach nicht dahinter, wieso es die fgets()-Aufrufe ignoriert ? Könnt ihr den Fehler sehen ?
Hier der Quellcode:
Vielen Dank im Voraus für eure Hilfe !
Hinweise: Ich kompiliere mit gcc, CPU: Intel Core i5-3230M, Kubuntu 64 Bit
PS: sorry für den Schreibfehler in der Themenüberschrift, kann man das noch irgendwie korrigieren ?
ich bin gerade dabei, ein Wörterbuch mittels einer verketteten Liste zu Programmieren. Nun bin ich auf ein kleines Problem gestoßen, was mich gerade an den Rand der Verzweiflung bringt.
In der Funktion eintrag_einfuegen() umgeht mein Programm einfach beide fgets()-Aufrufe, es schreibt einfach nur die Ausgaben der beiden printf's untereinander und warte dann auf eine Eingabe, wenn ich dann etwas eingegeben habe, verlässt es die Funktion und geht in den do-while Loop zurück. Ich komme einfach nicht dahinter, wieso es die fgets()-Aufrufe ignoriert ? Könnt ihr den Fehler sehen ?
Hier der Quellcode:
C++:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* Funktionsprototypen */
void eintrag_einfuegen(void);
void eintrag_loeschen(void);
void inhalt_ausgeben(void);
typedef struct EINTRAG {
char Deutsch[128];
char Englisch[128];
struct EINTRAG* next_element;
}eintrag;
eintrag* head;
eintrag* neu;
eintrag* aktuell;
int main(int argc, char *argv[])
{
int antwort;
head=NULL;
printf("Willkommen zu meinem Wörterbuch!\n");
do
{
printf("Was möchten sie tun?\n");
printf("1:Einen Eintrag am Ende einfügen\n");
printf("2:Einen Eintrag löschen\n");
printf("3:Den Inhalt der verketteten Liste ausgeben\n");
printf("4:Das Programm beenden\n");
puts("----------------------------------------------------");
scanf("%d",&antwort);
switch(antwort)
{
case 1: { eintrag_einfuegen(); break; }
case 2: { eintrag_loeschen(); break; }
case 3: { inhalt_ausgeben(); break; }
case 4: { exit(0); break; }
default: { printf("Keine gültige Eingabe, das Programm beendet sich!\n"); exit(-1); break; }
}
} while (1);
return 0;
}
void eintrag_einfuegen(void)
{
if (head==NULL)
{
neu=malloc(sizeof(eintrag));
printf("Geben Sie das englische Wort ein!\n");
fgets(neu->Englisch,128,stdin);
printf("Geben Sie das deutsche Wort ein!\n");
fgets(neu->Deutsch,128,stdin);
neu->next_element=NULL;
head=neu;
free(neu);
}
else
{
puts("PLATZHALTER");
}
}
void eintrag_loeschen(void)
{
}
void inhalt_ausgeben(void)
{
}
Vielen Dank im Voraus für eure Hilfe !
Hinweise: Ich kompiliere mit gcc, CPU: Intel Core i5-3230M, Kubuntu 64 Bit
PS: sorry für den Schreibfehler in der Themenüberschrift, kann man das noch irgendwie korrigieren ?
Zuletzt bearbeitet: