Pagina 1 di 5 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 43

Discussione: Rubrica in C

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2017
    Messaggi
    27

    Rubrica in C

    Ragazzi come programma devo realizzare una rubrica in c che mi permette di aggiungere un contatto,eliminarlo,ricercarlo e di stampare l'intera rubrica.. e fin qui ci siamo, ho risolto il tutto utilizzando uno struct al cui interno ci sono nome, cognome, città e telefono, ecc...
    ora però devo integrare la funzione di salvataggio e lettura da/su file!
    per il salvataggio ho ideato questo codice che funziona in quanto stampa su file i miei contatti
    codice:
        case 5://salvataggio su file                   
                    FILE *fp;//puntatore
                    fp = fopen("rubrica.dat", "a+");
                    for (v=0;v<utentimemorizzati;v++)
                    {
                    fprintf(fp,"Nome: %s \n",rubrica[v].nome);
                    fprintf(fp,"Cognome: %s \n",rubrica[v].cognome);
                    fprintf(fp,"Citta: %s \n",rubrica[v].citta);
                    fprintf(fp,"Telefono: % s\n",rubrica[v].telefono);
                    }
                    fclose(fp); 
                       printf("Rubrica salvata!\n");
                       break;
    in lettura invece non saprei come leggere i contatti cosi come stanno. suggerimenti?

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Con una fopen e tante fscanf ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2017
    Messaggi
    27
    Ho provato ad utilizzare lo stesso costrutto del salvataggio su file , ma non legge i dati, sarò io che sbaglio
    una volta aperto il file ho fatto 4 fscanf così:
    fscanf(fp1,"%s",rubrica[v].nome), stessa cosa con congnome,citta e telefono.. ma andando poi a stampare la rubrica non esce alcuna voce

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Detta così non si può dire molto ... mostra il codice usato e assicurati che stai effettivamente leggendo i dati usando breakpoint e debugging.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2017
    Messaggi
    27
    Avevo semplicemente utilizzato la falsa riga della scrittura su file.. ma a questo punto dubito si possa prendere questa strada
    codice:
    		   	case 6://lettura del file
    		   	
    		   		FILE *fp1;//puntatore
    				fp1 = fopen("rubrica.dat", "r");//Lettura file. 
    				while(!feof(fp1)) //finchè non finisce il file
    				{
    				fscanf(fp1,"%s",rubrica[v].nome);
    				fscanf(fp1,"%s",rubrica[v].cognome);
    				fscanf(fp1,"%s",rubrica[v].citta);
    				fscanf(fp1,"%s",rubrica[v].telefono);
    				v++;
    				}
    				fclose(fp1); 
    		   		printf("Rubrica letta!\n");
    		   		break;

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ma la variabile v da dove parte?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2017
    Messaggi
    27
    v è la variabile generale che ho utilizzato...
    codice:
    case 1: //aggiunti contatto
    		   		printf("Inserire il nome:\n");
    				scanf("%s",rubrica[v].nome);
    				printf("Inserire il cognome:\n");
    				scanf("%s",rubrica[v].cognome);
    				printf("Inserire la citta:\n");
    				scanf("%s",rubrica[v].citta);
    				printf("Inserire numero di telefono:\n");
    				scanf("%s",rubrica[v].telefono);
    				utentimemorizzati++;
    		        v++;
    				//Verifica se i dati sono validi 
    				if ( utentimemorizzati == DIM )
    				{
    				puts("ERRORE: rubrica piena") ;
    				break ;
    				}
    				break;
    Ad esempio questo è l'inserimento del contatto, invece di utilizzare la variabile i, ho utilizzato la v.

    queste sono tutte le mie variabili
    codice:
    	char nome[DIM],cognome[DIM],telefono[DIM],citta[DIM];
    	int scelta=0;//comando switch
    	int utentimemorizzati=0;
    	int v=0;//generale nelle stringhe
    	int trovato=0;//ricerca
    	int j=0;//cancellare
    	int comando;//comando finale
    	persona rubrica[500]; //stringa con tutti gli struct
    	int pos;//posizione int ricerca

  8. #8
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Non mi hai capito ... quando rileggi, v deve partire da 0. Ma tu non assegni 0 a v
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  9. #9
    Utente di HTML.it
    Registrato dal
    Apr 2017
    Messaggi
    27
    Hai ragione scusa non avevo capito
    comunque nonostante la correzione il file non viene letto.
    ho provato anche a modificare il la scrittura del file togliendo ,nome,cognome,telefono lasciando solo %s, pensando che era quello che il programma non riusciva a leggere, ma nulla

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Intanto quando scrivi devi usare semplicemente

    "%s\n"

    nella fprintf per memorizzare solo i dati e non tutto il resto.

    Poi assicurati che il file contenga i dati che hai scritto, aprendolo con notepad.
    Vedi tutti i dati della rubrica?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.