Salve ragazzi ho qualche problema con questo programma vi posto la consegna:
Definire una struttura che permetta di gestire i dati contenuti in un rubrica telefonica.
Creare un programma in linguaggio C che gestisca l’immissione dei dati da tastiera
dei dati della rubrica. Terminare la procedura di immissione dei dati quando si
verifica una di queste condizioni:
⇒ l’informazione per il campo numero è uguale a -1
⇒ il cognome immesso è uguale ad uno precedentemente immesso
=> Salvare la lista su file
Il programma che ho fatto io è questo
Il programma funziona tutto solo che non riesco a implementare la funzione confronto ovvero nn mi legge il break al suo interno...Se vedete inoltre commentato c'è anche un altro metodo per fare la funzione...codice:#include <stdio.h> #include <stdlib.h> #include <assert.h> #include <string.h> typedef struct rubrica { char nome[16]; char cognome[16]; char numero[16]; rubrica *next; } rubrica; rubrica *Add_to_list(rubrica *head,char nome[],char cognome[],char numero[]) { rubrica *a; a=(rubrica*)malloc(sizeof(rubrica)); strcpy(a->nome,nome); strcpy(a->cognome,cognome); strcpy(a->numero,numero); a->next=NULL; /*if(head==NULL) return a;*/ a->next=head; return a; } rubrica *Print_list(rubrica *head) { int i=0; printf("Lista: \n"); while(head!=NULL) { printf("%d)\nnome:%s\ncognome:%s\nnumero:%s\n",i++,head->nome,head->cognome,head->numero); head=head->next; } } rubrica *confronto(rubrica *head,char test[]) { for(; head!=NULL; head=head->next) { if(strcmp(head->cognome,test)==0) { break; } } } /*rubrica *Search_in_list(rubrica*head,char test[]) { if(head==NULL) return NULL; while(head!=NULL) { if (strcmp(head->cognome,test)!=0) break; head=head->next; } return NULL; }*/ rubrica Save_to_file(rubrica *head) { FILE*fp; fp=fopen("fname.txt","w"); if(fp!=NULL) { while(head!=NULL) { fprintf(fp, "nome:%s\ncognome:%s\nnumero telefonico:%s\n",head->nome,head->cognome,head->numero); head=head->next; } } } main() { rubrica a; char file[16]; rubrica*head = NULL; printf("inserisci elementi \n"); strcpy(a.numero,"0"); while(strcmp(a.numero,"-1")!=0 ) { printf("Nome:"); scanf("%s",a.nome); printf("Cognome:"); scanf("%s",a.cognome); printf("Numero di telefono:"); scanf("%s",a.numero); getchar(); head=Add_to_list(head,a.nome,a.cognome,a.numero); confronto(head,a.cognome); } Print_list(head); Save_to_file(head); getchar(); }
Avete qualche suggerimento da darmi?
Ah vorrei dirvi che il programma secondo consegna del prof a lezione lo posso fare solo con le liste... Preciso che nn si tratta di un compito in classe ma solamente di un'esercitazione da svolgere a casa per acquisire praticità con le liste...
Grazie in anticipo per l'aiuto![]()

Rispondi quotando