Hey my problem is that when i try to input the numbers "Geburtstag:JAHR/TAG/MONAT:" i must do an zero berfore the number i want. when i doesnt do it the number comes not correctly out example:
Bitte geben sie den Geburtstag:TAG: 7
Bitte geben sie den Geburtstag:MONAT: ein: 11
Bitte geben sie den Geburtstag:JAHR: ein: 2007
and the output is:
:: hat am 00.01.07 Geburtstag
i think the problem is in the write_data function
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
#define FALSE 0
#define TRUE !FALSE
#define max 40
#include <string.h>
struct person
{
char name[max];
int day;
int month;
int year;
};
void read_data(void);
void write_data(void);
void Ueberschreiben(void);
char *NL(char *string);
int main()
{
int done = FALSE;
int c;
while(!done)
{
printf("N - Neuen Geburtstag eintragen\n");
printf("A - Geburtstage Anzeigen\n");
printf("E - Beenden\n");
printf("U - Ueberschreiben\n");
fflush(stdin);
c = (char)toupper(getchar());
switch(c)
{
case 'N': printf("Neuer Geburtstag\n\n"); write_data(); break;
case 'A': printf("Geburtstage Anzeigen\n\n"); read_data(); break;
case 'E': printf("Beenden\n\n"); done = TRUE; break;
case 'U': printf("Daten Uebercshreiben\n\n"); Ueberschreiben(); break;
default: printf("????\n"); break;
}
}
}
void write_data(void)
{
FILE* file;
int f;
char input[max];
struct person Mensch;
printf("Bitte geben sie den Namen der Person ein: ");
getchar();
fgets(input, max, stdin);
NL(input);
strcpy(Mensch.name, input);
printf("Bitte geben sie den Geburtstag:TAG: ein: ");
getchar();
Mensch.day = atoi(fgets(input, max, stdin));
printf("Bitte geben sie den Geburtstag:MONAT: ein: ");
getchar();
Mensch.month = atoi(fgets(input, max, stdin));
printf("Bitte geben sie den Geburtstag:JAHR: ein: ");
getchar();
Mensch.year = atoi(fgets(input, max, stdin));
getchar();
file = fopen("Geburtsjahr.dat", "a");
if(file == NULL)
{
printf("Dateifehler\n");
exit(0);
}
fwrite(&Mensch, sizeof(struct person), 1, file);
fclose(file);
printf("Mensch hinzugefuegt\n");
getchar();
}
void read_data(void)
{
FILE* file;
struct person Mensch;
int x;
file = fopen("Geburtsjahr.dat", "r");
if(file == NULL)
{
printf("Dateifehler\n");
return;
}
while(TRUE)
{
x = fread(&Mensch, sizeof(struct person), 1, file);
if(x == 0)
{
break;
}
printf("%s hat am %.2i.%.2i.%i Geburtstag\n", Mensch.name, Mensch.day, Mensch.month, Mensch.year);
}
fclose(file);
}
void Ueberschreiben(void)
{
char c;
FILE* file;
printf("Wollen sie wirklich Die Daten Ueberschreiben(y/n): ");
getchar();
c = (char)toupper(getchar());
if(c == 'Y')
{
file = fopen("Geburtsjahr.dat", "w");
if(file == NULL)
{
printf("Dateifehler");
return;
}
fclose(file);
printf("Alle Daten erfolgreich geloescht\n");
getchar();
}
else
{
printf("Okay Abgebrochen\n");
return;
}
}
char *NL(char *string)
{
char* string2 = string;
while(*string2)
{
if(*string2 == '\n')
*string2 = '\0';
string2++;
}
return string;
}