FILE
-
Hallo ihr Lieben,
ich soll für ein Programm, das ein Telefonbuch einließt, ein Unterprogramm schreiben, dass Telefonnummern vergleicht z.B.: 2355/1243 oder 2333-3453 und diese auf gleichheit überprüft.
Die Telefonnr. sind über ein struct in einem FILE abgelegt das z.B. unter D:\\Studium\\Test.txt" gespeichert ist.Meine Frage ist, wie kann ich auf die abgelegte Datei zugreifen bzw. sie irgendwo zwischen Speichern und dann vergleichen? Müsste ja irgendwie auslesen in ein char[] und die dann vergleichen. Nur wie geht das?
z.B.: printf("%s", zeile);
scanf("%s", vergleiche1)....
oder wie soll das funktionieren?[cpp]
#include <stdio.h>
#include <stdlib.h>typedef struct teleintrag
{
char name[50];
char vorname[50];
char ort[50];
char telefonnummer[50];
};void erstelle_eintrag(void)
{
teleintrag NEU;printf("\neuen Eintrag anlegen\n\n");
printf("Name: "); scanf("%s",&NEU.name);
printf("Vorname: "); scanf("%s",&NEU.vorname);
printf("Ort: "); scanf("%s",&NEU.ort);
printf("Telefonnummer: "); scanf("%s",&NEU.telefonnummer);FILE *datei;
datei = fopen("D:\\Studium\\Test","a");
fprintf(datei,"%s %s %s %s\n",NEU.name, NEU.vorname, NEU.ort, NEU.telefonnummer);
fclose(datei);
}**void Suche_telefonnummer(){
FILE *datei;
char zeile[100];
datei = fopen("D:\\Studium\\Test","r");
while(fscanf(datei,"s", zeile) != EOF)
.....}**
void ausgabe_telefonbuch(void)
{
system("cls");
printf("Telefonbuch\n\n\n");FILE *datei;
datei = fopen("D:\\Studium\\Test","r");teleintrag eintrag;
printf("%-20s%-20s%-20s%-19s\n","Name","Vorname","Ort","Telefonnummer");
printf("-----------------------------------------------------------------------------\n");while (fscanf(datei,"%s %s %s %s",&eintrag.name,&eintrag.vorname,&eintrag.ort,&eintrag.telefonnummer) != EOF)
{
printf("%-20s%-20s%-20s%-19s\n",eintrag.name,eintrag.vorname,eintrag.ort,eintrag.telefonnummer);
}fclose(datei);
printf("\n\n\n\n");
system("pause");
}int main(void)
{
do
{
system("cls"); // Bildschirm löschen
printf("Telefonverzeichnis\n\n\n");
printf("E - neuen Eintrag erstellen\n");
printf("S - nach Namen suchen\n");
printf("N - nach Telefonnummer suchen\n");
printf("A - Telefonbuch ausgeben\n");
printf("Z - Programm beenden\n");
printf("\n\n\nIhre Wahl -->");char auswahl;
fflush(stdin);
scanf("%c",&auswahl);switch (auswahl)
{
case 'n':
case 'N':case 'e':
case 'E':
erstelle_eintrag();
break;
case 'a':
case 'A':
ausgabe_telefonbuch();
break;
case 'z':
case 'Z':
return 0;
break;
default:
printf("\nungueltige Eingabe!!!\n\n");
system("pause");
break;
}
}
while (1);system("PAUSE");
return 0;
}[/cpp]
-
Hi,
wenn die Einträge als Strukturen gespeichert sind, kannst du das ganze Telefonbuch in ein Array von Strukturen einlesen. Dann ist jede Telefonnummer über die Variable telefonnummer der Struktur teleintrag
adressierbar.
-
void Suche_telefonnummer(){
FILE *datei;
teleintrag N;
char zeile[100];
datei = fopen("D:\\Studium\\Test","r");
while(fscanf(datei,"s", zeile) != EOF)
N.Telefonnummer
.....}
so in etwa? woher weiß das Programm oder ich wieviele Telefoneinträge ich aufnehmen muss?
-
Head0r schrieb:
so in etwa? woher weiß das Programm oder ich wieviele Telefoneinträge ich aufnehmen muss?
Nee, so nicht, guck mal wie man Strukturen mit fread einliest. Entweder die Anzahl der Einträge ist irgendwo gespeichert, oder aber du speicherst die Einträge in ein dynamisch wachsendes Array von Strukturzeigern oder in einer verketteten Liste.
-
gut, ich weiß, was das ist. Nur komisch, dass unser Prof. sowas noch nicht drangenommen hat.
-
würde fgets gehen?