#include #include #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 }