000
06.07.2004, 13:40 Uhr
~nullchecker
Gast
|
hallo. habe da ein problem. ich habe ein programm mit dem ich adressen verwalten soll. das funktioniert auch alles. was ich aber nicht hin bekomme ist eine sortierte ausgabe bzw ein modifizieren einzelner datensätze. bis jetzt kann ich immer nur die ganze textdatei auslesen bzw löschen. hier mal das programm:
C++: |
//*Adressverwaltung, Matthias Feiler, Frank Stoye*//
#include <ctype.h> #include <stdlib.h> #include <stdio.h> #include <string.h> #define ANZ 10 int gesamtanzahl=0, nr, pause; unsigned int i; //int vergleiche(const void *pva , const void *pvb ); ||MLC||
//* Prototyp *// struct Teilnehmer { char vorname [30]; char nachname [30]; char strasse [35]; int plz; char stadt [50]; int matrikelnummer; }; void leeren(); void anzahlderteilnehmer(); void eingabeEinesTeilnehmers( struct Teilnehmer *, unsigned ); void ausgabe(struct Teilnehmer * ); void speicherung(struct Teilnehmer * ); void dateiausgabe(struct Teilnehmer *); void hinzufuegen(struct Teilnehmer * );
//Hauptprogramm int main() { while (1) { system("cls"); struct Teilnehmer teilnehmerfeld[ANZ];//Feld aller teilnehmer for (i=0; i<gesamtanzahl;i++)//fortlaufende felder unsigned int nr; printf(" \nDaten neu Anlegen = 1"); printf(" \nDaten aus Datei lesen = 2"); printf(" \nDaten aus Datei loeschen = 3"); printf(" \nDaten hinzufuegen = 4"); printf(" \nBeenden = 9"); printf(" \nIhre Wahl? : "); scanf ("%d", &nr); switch(nr) { case 1: system("cls"); anzahlderteilnehmer(); for (i=0; i<gesamtanzahl;i++) eingabeEinesTeilnehmers(teilnehmerfeld,i); speicherung(teilnehmerfeld); system("PAUSE"); break;
case 2: system("cls"); dateiausgabe(teilnehmerfeld); system("PAUSE"); break; case 3: system("cls"); leeren(); system("PAUSE"); break; case 4: system("cls"); anzahlderteilnehmer(); for (i=0; i<gesamtanzahl;i++) eingabeEinesTeilnehmers(teilnehmerfeld,i); hinzufuegen(teilnehmerfeld); system("PAUSE"); break; } if(nr==9) break; }
return 0; } //* Definition Teilnehmerfeld*// //ausgabe(teilnehmerfeld);
//******************************************************************************
//anzahl der teilnehmer--------------------------------------------------------- void anzahlderteilnehmer() { printf("\nGeben sie die Anzahl der Datensaetze an!<11\n"); scanf("%ud" ,&gesamtanzahl); if (gesamtanzahl > ANZ) { gesamtanzahl=ANZ; printf("Ihre Eingabe wurde auf %d Datensaetze beschraenkt \n",ANZ); } if (gesamtanzahl==0) { printf("bitte Zahlenwert eingeben!!!\n"); while(getchar()!='\n'){;} scanf("%d", &gesamtanzahl); } } //Eingabe----------------------------------------------------------------------- void eingabeEinesTeilnehmers( struct Teilnehmer *feld, unsigned pos) { printf("\nEingabe der Daten des %u. Teilnehmers:",pos+1); printf("\nGeben sie den Vornamen ein: "); scanf("%s",&(feld[pos].vorname)); printf("\nGeben sie den Nachnamen ein: "); scanf("%s",&(feld[pos].nachname)); printf("\nGeben sie die Strasse und die Hausnummer ein: "); scanf("%s", &(feld[pos].strasse)); printf("\nGeben sie die Postleitzahl ein: "); if (scanf("%d", &(feld[pos].plz))==0) { printf("bitte Zahlenwert eingeben!!!\n"); while(getchar()!='\n'); scanf("%d",&(feld[pos].plz)); } printf("\nGeben sie die Wohnort ein: "); scanf("%s",&(feld[pos].stadt)); printf("\nGeben sie Matrikelnummer ein: "); if (scanf("%d", &(feld[pos].matrikelnummer))==0) { printf("bitte Zahlenwert eingeben!!!\n"); while(getchar()!='\n'); scanf("%d",&(feld[pos].matrikelnummer)); } }
//Ausgabe----------------------------------------------------------------------- void ausgabe(struct Teilnehmer * feld) {
unsigned int i; printf("\n******************************************************************\a\n"); printf("\nDie neuen Datensaetze auf einen Blick..\n"); for(i=0;i<gesamtanzahl;i++) printf("\%s %s\tstrasse:%s\tplz:%d\tstadt:%s\tmatrikelnummer:%d\n", feld[i].vorname, feld[i].nachname, feld[i].strasse, feld[i].plz, feld[i].stadt, feld[i].matrikelnummer); } //Speicherung------------------------------------------------------------------- void speicherung(struct Teilnehmer *feld) { unsigned int i; FILE *stream; stream = fopen("datei_txt","w"); for (i=0;i<gesamtanzahl;i++) fprintf(stream,"\%s %s\tstrasse:%s\tplz:%d\tstadt:%s\tmatrikelnummer:%d\n", feld[i].vorname, feld[i].nachname, feld[i].strasse, feld[i].plz, feld[i].stadt, feld[i].matrikelnummer); fclose(stream); }
//Hinzufuegen von daten in die bereits bestehende datei------------------------- void hinzufuegen (struct Teilnehmer * feld) { unsigned int i; FILE *stream; stream = fopen("datei_txt","a"); for (i=0;i<gesamtanzahl;i++) fprintf(stream,"\%s %s\tstrasse:%s\tplz:%d\tstadt:%s\tmatrikelnummer:%d\n", feld[i].vorname, feld[i].nachname, feld[i].strasse, feld[i].plz, feld[i].stadt, feld[i].matrikelnummer); fclose(stream); }
//Einlesen und Ausgabe der abgespeicherten Daten-------------------------------- void dateiausgabe(Teilnehmer * feld) { FILE *stream; char ch; printf("****************************************************************"); printf("\nNun folgen die Ausgelesenen Daten von datei.txt: \n\n\n"); if ((stream = fopen("datei_txt","r"))==0 )//Sicherheitsanweisung { printf("\n\nFehler beim oeffnen!!!!"); exit(1); } stream = fopen("datei_txt","r"); ch=fgetc(stream); do { ch = fgetc(stream); //jeder einzellne wert wird gelesen
//Ausgabe der eingelesenen Daten------------------------------------------------ putchar(ch); } while(ch !=EOF); fclose(stream); } //loeschen von datei.txt-------------------------------------------------------- void leeren() { int loeschen; printf("\nwirklich????\n"); printf("\n j zum Vortfahren, n zum Abrechen: "); scanf ("%S",&loeschen); switch (loeschen) { case 'j': FILE *stream; stream = fopen("datei_txt","w"); break; } }
|
Bearbeitung von 0xdeadbeef: |
cpp-tags eingefügt. Machs nächstes mal selbst.
|
Dieser Post wurde am 06.07.2004 um 13:43 Uhr von 0xdeadbeef editiert. |