000
06.04.2009, 12:58 Uhr
~der-sibbi
Gast
|
Hey,
nehmen in der Schule gerade Strukturen durch. Sollen jetzt ein Adressbuch schreiben. Klappt meiner Meinung auch soweit ganz gut. Nur wenn ich mir Einträge anzeigen lassen möchte, kommen immer so komische Zeichen. Man erkennt dazwischen aber die gewollten Daten.
Was hab ich falsch gemacht? Hoffe ihr könnt mir helfen. - Im vorraus schonmal danke.
Hier der Code
C++: |
// Adressbuch.cpp: Hauptprojektdatei.
#include "stdafx.h" #include "stdlib.h" #include "stdio.h" #include "conio.h" #include "string.h"
using namespace System;
struct adressbuch { char vorname[20]; char nachname[20]; char ort[20]; char plz[5]; char strasse[30]; char bundesland[30]; char land[30]; char vorwahl[6]; char telnr[10]; char vorwahl_handy[6]; char handynr[10]; char bday[10]; char hausnummer[3]; };
int index;
void structload(adressbuch*); void newitems(adressbuch*); void showall(adressbuch[]); void structsave(adressbuch[]);
int main(array<System::String ^> ^args) { adressbuch eintrag[100]; index = 0; for(int i=0;i<100;i++) { strcpy(eintrag[i].vorname,"\0"); strcpy(eintrag[i].nachname,"\0"); strcpy(eintrag[i].bday,"\0"); strcpy(eintrag[i].strasse,"\0"); strcpy(eintrag[i].hausnummer,"\0"); strcpy(eintrag[1].plz,"\0"); strcpy(eintrag[i].ort,"\0"); strcpy(eintrag[i].bundesland,"\0"); strcpy(eintrag[i].land,"\0"); strcpy(eintrag[i].vorwahl,"\0"); strcpy(eintrag[i].telnr,"\0"); strcpy(eintrag[i].vorwahl_handy,"\0"); strcpy(eintrag[i].handynr,"\0"); }
int ausw; do { system("cls"); printf("Adressbuch \n\n"); printf("1. Neuen Eintrag eingeben: \n"); printf("2. Adressbuch speichern: \n"); printf("3. Adressbuch laden: \n"); printf("4. Adressbuch anzeigen: \n"); printf("8. Programm beenden: \n\n"); printf("Ihre Auswahl: --> ");
scanf("%i",&ausw); switch(ausw) { case 1: newitems(eintrag); case 2: structsave(eintrag); case 3: structload(eintrag); break; case 4: showall(eintrag); break; case 8: break; defrault: printf("Falsche Auswahl!! Bitte korrigieren!! \n"); printf("Weiter mit beliebieger Taste..."); } } while(ausw!=8); return 0; }
void structload(adressbuch* test) { FILE *fp1; char filename[30];
int i; printf("\n\nBitte Dateiname angeben: --> "); scanf("%s",filename); fp1 = fopen(filename,"r"); if(fp1!=NULL) { for(i=0;i<100;i++) { fscanf(fp1,"%s",&test[i].vorname); fscanf(fp1,"%s",&test[i].nachname); fscanf(fp1,"%s",&test[i].bday); fscanf(fp1,"%s",&test[i].strasse); fscanf(fp1,"%s",&test[i].hausnummer); fscanf(fp1,"%s",&test[i].plz); fscanf(fp1,"%s",&test[i].ort); fscanf(fp1,"%s",&test[i].bundesland); fscanf(fp1,"%s",&test[i].land); fscanf(fp1,"%s",&test[i].vorwahl); fscanf(fp1,"%s",&test[i].telnr); fscanf(fp1,"%s",&test[i].vorwahl_handy); fscanf(fp1,"%s",&test[i].handynr); } fscanf(fp1,"%i",&index); fclose(fp1); printf("Lesen erfolgreich Index = %i\n\n",index); } else { printf("Fehler beim Oeffnen von: %s\n\n",index); } printf("Weiter mit beliebiger Taste..."); getch(); } void structsave(adressbuch test[]) { FILE *fp1; char filename[30]; int i; printf("\n\nBitte Dateinamen eingeben: --> "); scanf("%s",filename); fp1 = fopen(filename,"w"); for(i=0;i<100;i++) { fprintf(fp1,"%s",test[i].vorname); fprintf(fp1,"%s",test[i].nachname); fprintf(fp1,"%s",test[i].bday); fprintf(fp1,"%s",test[i].strasse); fprintf(fp1,"%s",test[i].hausnummer); fprintf(fp1,"%s",test[i].plz); fprintf(fp1,"%s",test[i].ort); fprintf(fp1,"%s",test[i].bundesland); fprintf(fp1,"%s",test[i].land); fprintf(fp1,"%s",test[i].vorwahl); fprintf(fp1,"%s",test[i].telnr); fprintf(fp1,"%s",test[i].vorwahl_handy); fprintf(fp1,"%s",test[i].handynr); } fprintf(fp1,"%i",index); fclose(fp1); printf("Schreiben erfolgreich\n\n"); printf("Weiter mit beliebiger Taste..."); getch(); }
void newitems(adressbuch* test) { int i, antw; char abbruch, zei; system("cls"); for(i=index;i<100;i++) { index=i; printf("\nBitte Eintrag vornehmen fuer Position %i\n\n",i+1); printf("Bitte Vorname eingeben:"); scanf("%s",&test[i].vorname); printf("Bitte Nachname eingeben:"); scanf("%s",&test[i].nachname); printf("Bitte Geburtstag eingeben:"); scanf("%s",&test[i].bday); printf("Bitte Strasse eingeben:"); scanf("%s",&test[i].strasse); printf("Bitte Hausnummer eingeben:"); scanf("%s",&test[i].hausnummer); printf("Bitte PLZ eingeben:"); scanf("%s",&test[i].plz); printf("Bitte Ort eingeben:"); scanf("%s",&test[i].ort); printf("Bitte Bundesland eingeben:"); scanf("%s",&test[i].bundesland); printf("Bitte Land eingeben:"); scanf("%s",&test[i].land); printf("Bitte Vorwahl eingeben:"); scanf("%s",&test[i].vorwahl); printf("Bitte Telefonnummmer eingeben:"); scanf("%s",&test[i].telnr); printf("Bitte Vorwahl der Handynummer eingeben:"); scanf("%s",&test[i].vorwahl_handy); printf("Bitte Handynummer eingeben eingeben:"); scanf("%s",&test[i].handynr); index++; do { printf("Wollen Sie noch einen Eintrag hinzufuegen?\n"); printf("1=ja\n"); printf("2=nein: "); scanf("%i",&antw); if(antw!=1&&antw!=2) { printf("Falsche Eingabe:\n"); } }while(antw!=1&&antw!=2); if(antw==2) { break; } } }
void showall(adressbuch test[]) { int i; system("cls"); for(i=0;i<=index;i++) { printf("Eintrag-Nr.: %i\n",i+1); printf("Name: %s %s\n",test[i].vorname,test[i].nachname); printf("Geburtstag: %s\n",test[i].bday); printf("Adresse: %s %s",test[i].strasse,test[i].hausnummer); printf(" %s %s",test[i].plz,test[i].ort); printf(" %s %s",test[i].bundesland,test[i].land); printf("Telefon: %s / %s\n",test[i].vorwahl,test[i].telnr); printf("Handy: %s / %s\n",test[i].vorwahl_handy,test[i].handynr); } printf("\n\nWeiter mit Eingabetaste"); getch(); }
|
Bearbeitung von Pler: |
Code-Tags waren schon da. Habe aber den Tipfehler mal korrigiert.
|
Dieser Post wurde am 06.04.2009 um 13:33 Uhr von Pler editiert. |