Salve a tutti sono un nuovo utente, vi espongo subito un mio problema: ho compilato questo programma che apparentemente funziona, pecchato che quando inserisco i dati della seconda persona e ricerco la prima non trovo la persona precedentemente inserita, qualcuno potrebbe aiutarmi?
grazie
//voglio scrivere un archivio in cui inserisco un sottoprogramma di creazione, uno di inserimento e uno di ricerca
#include <stdio.h>
#include <conio.h>
#include <string.h>
struct nom
{
char cogn[35];
char nom[30];
char ind[40];
char tel[20];
};
struct nom am;
//creazione che non funziona
void crea(void)
{
FILE *f;
char m;
f=fopen("c:\\in_c\\archivio.dat","wb");
if(f==NULL)
f=fopen("c:\\in_c\\archivio.dat","wb");
else
{
printf("Il file esiste, lo vuoi sostituire? s/n");
scanf("%s",m);
if(m=='s')
f=fopen("c:\\in_c\\archivio.dat","wb");
}
fclose(f);
};
//inserimento persona
void ins_per(void)
{
FILE *f;
f=fopen("c:\\in_c\\archivio.dat","a");
printf("Inserisci un cognome: ");
scanf("%s",am.cogn);
printf("\nInserisci un nome: ");
scanf("%s",am.nom);
printf("\nInserisci un indirizzo: ");
scanf("%s",am.ind);
printf("\nInserisci un numero telefonico: ");
scanf("%s",am.tel);
fwrite(&am,sizeof(struct nom),1,f);
fclose(f);
};
//ricerca persona
void ric_per(void)
{
int r,t,m;
char cogn[35];
char nome[30];
FILE *f;
f=fopen("c:\\in_c\\archivio.dat","a+");
printf("Digita il cognome della persona: ");
scanf("%s",cogn);
m=fread(&am,sizeof(struct nom),1,f);
do
{
r=strcmp(am.cogn,cogn);
if(r==0)
{
printf("\nDigita il nome della persona: ");
scanf("%s",nome);
m=fread(&am,sizeof(struct nom),1,f);
t=strcmp(am.nom,nome);
if(t==0)
{
printf("\nDati della persona\n\n");
printf("\nCognome: %s",am.cogn);
printf("\nNome: %s",am.nom);
printf("\nIndirizzo: %s",am.ind);
printf("\nNumero telefonico: %s\n",am.tel);
getch();
break;
}
}
m=fread(&am,sizeof(struct nom),1,f);
}
while(m!=0);
fclose(f);
};
void main(void)
{
int g;
do
{
clrscr();
printf("-------------------------------------------------------------------------------\n");
printf("\n BENVENUTI IN QUESTO PROGRAMMA FANTASTICO\n\n");
printf("Digita 1 se vuoi creare un archivio\n");
printf("Digita 2 se vuoi inserire una persona nell'archivio\n");
printf("Digita 3 se vuoi ricercare una persona nell'archivio\n");
printf("digita 4 se vuoi uscire dal programma\n");
printf("-------------------------------------------------------------------------------\n");
scanf("%d",&g);
if(g==1)
crea();
if(g==2)
ins_per();
if(g==3)
ric_per();
if(g==4)
break;
}
while(1);
}