Info2/30.1.3.c
2025-05-21 11:53:14 +02:00

98 lines
3.1 KiB
C

#include <stdio.h>
#include <string.h>
#define MAXLEN 50
void getstring(char *ptr)
{
fgets(ptr, MAXLEN, stdin); // Liest bis zu MAXLEN Zeichen aus der Standardeingabe
ptr[strcspn(ptr, "\n")] = '\0'; // Ersetzt das '\n' Zeichen durch '\0' (String-Ende)
fflush(stdin); // Leert den Eingabepuffer
}
// Funktion zur Eingabe der Adressdaten
// Gibt die Anzahl der gewünschten Wiederholungen zurück oder 0 bei fehlerhafter Eingabe
int eingabe(char *vorname, char *nachname, char *strasse, char *wohnort, char *hausnr, int *postleitzahl, char *telefon, char *fax)
{
printf("Vorname\t\t:");
getstring(vorname);
printf("Nachname\t:");
getstring(nachname);
printf("Strasse\t\t:");
getstring(strasse);
printf("Hausnummer\t:");
getstring(hausnr);
printf("Postleitzahl\t:");
// Überprüft die Eingabe auf einen gültigen Integer
if(scanf("%d", postleitzahl) != 1)
{
return 0; // Fehler bei der Eingabe
}
fflush(stdin); // Eingabepuffer leeren
printf("Wohnort\t\t:");
getstring(wohnort);
printf("Telefon\t\t:");
getstring(telefon);
printf("Fax\t\t:");
getstring(fax);
printf("Wie oft soll die Adresse in die Datei geschrieben werden?\t:");
int anzahl;
// Überprüft die Eingabe auf einen gültigen Integer
if(scanf("%d", &anzahl) != 1)
{
return 0; // Fehler bei der Eingabe
}
return anzahl; // Gibt die Anzahl der Wiederholungen zurück
}
int main()
{
// Öffnet die Datei "datei.txt" im Anhangmodus ("a")
FILE *ziel;
ziel = fopen("datei.txt", "a");
// Überprüft, ob die Datei erfolgreich geöffnet wurde
if (ziel == NULL)
{
printf("Fehler beim Öffnen der Datei\n");
return 1; // Fehlercode 1: Datei konnte nicht geöffnet werden
}
// Definition der Variablen für die Adressdaten
char vorname[MAXLEN], nachname[MAXLEN], strasse[MAXLEN], wohnort[MAXLEN], hausnr[MAXLEN], telefon[MAXLEN], fax[MAXLEN];
int postleitzahl, anzahl;
// Ruft die Eingabefunktion auf und prüft, ob die Eingabe erfolgreich war
if((anzahl = eingabe(vorname, nachname, strasse, wohnort, hausnr, &postleitzahl, telefon, fax)) == 0)
{
return 0; // Fehlerhafte Eingabe, Programm wird beendet
}
// Schreibt einen Trenner in die Datei
fprintf(ziel, "-----------------------------------------------------\n");
// Schleife zum mehrfachen Schreiben der Daten in die Datei
for (int i = 0; i < anzahl; i++)
{
fprintf(ziel, "%s %s\n", vorname, nachname); // Vorname und Nachname
fprintf(ziel, "%s %s\n", strasse, hausnr); // Straße und Hausnummer
fprintf(ziel, "%d %s\n\n", postleitzahl, wohnort); // Postleitzahl und Wohnort
fprintf(ziel, "Tel. %s\n", telefon); // Telefonnummer
fprintf(ziel, "Fax %s\n", fax); // Faxnummer
fprintf(ziel, "-----------------------------------------------------\n");
}
fclose(ziel); // Schließt die Datei
return 0; // Programmende
}