Pagina 1 di 5 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 47
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2011
    residenza
    Firenze
    Messaggi
    260

    [C] Non inizia a cercare dalla prima parola del file

    Salve a tutti sto creando un progetto universitario che consta in una rubrica telefonica.
    Praticamente ho qua due funzioni, una che aggiunge le voci in rubrica (cognome, nome e telefono) ed un'altra che cerca un cognome e nome preciso per poi visualizzare l'intera voce.
    Sono fermo nella creazione della funzione che ricerca i nomi nella rubrica ma il problema è il seguente:
    Per il momento faccio scrivere sullo stdout la voce della prima persona soltanto che mi da in output lo spazio tra il cognome e il nome e poi mi da il nome e il numero. In poche parole mi salta la fscanf del cognome ossia la prima parola della riga. Vi posto i pezzetti di codice che interessano:

    //Aggiungere record in rubrica
    int addContact(){
    FILE*f;
    char cognome[15], nome[15], telefono[15];
    f=fopen("rubrica.txt","a");
    printf("COGNOME: ");
    scanf("%s",cognome);
    printf("NOME: ");
    scanf("%s",nome);
    printf("TELEFONO: ");
    scanf("%s",telefono);
    fprintf(f,"%s %s %s\n",cognome,nome,telefono);
    fclose(f);
    return 0;
    }

    //Trovare contatto/i
    int searchContact(){
    FILE*f;
    nomeT[15], cognomeT[30], telefonoT[10];
    f=fopen("rubrica.txt","r");
    fscanf(f,"%s",cognomeT);
    fscanf(f,"%s",nomeT);
    fscanf(f,"%s",telefonoT);
    printf("%s %s %s",cognomeT,nomeT,telefonoT);
    fclose(f);
    return 0;
    }

    Ho fatto due prove:
    1) Inserisco una nuova voce tramite il comando addContact() e poi effettuo la ricerca con searchContact() e mi da l'errore in questione;
    2)Inserisco a mano nel file rubrica.txt la voce della persona ed effettuo la ricerca con searchContact() ed ecco che magicamente mi appaiono tutte e tre le voci (cognome, nome e telefono). Cioè la fscanf comincia a leggere dalla prima parola della riga.

    Da questo presumo che quindi è una problema della funzione addContact().
    Secondo voi quale potrebbe essere il problema???
    Scusate il testo lungo ma mi volevo spiegare bene!
    Grazie mille

  2. #2
    Utente di HTML.it L'avatar di goatboy
    Registrato dal
    Mar 2011
    residenza
    Salerno
    Messaggi
    408
    Prova ad usare la fgets al posto della scanf

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2011
    residenza
    Firenze
    Messaggi
    260
    E come faccio a leggere una parola alla volta da un file con la fgets()?

  4. #4
    Utente di HTML.it L'avatar di goatboy
    Registrato dal
    Mar 2011
    residenza
    Salerno
    Messaggi
    408
    Ho detto al posto della scanf, non della fscanf..

  5. #5
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Sei sicuro che il tuo codice venga copilato O_o
    codice:
    nomeT[15], cognomeT[30], telefonoT[10];
    errore!
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2011
    residenza
    Firenze
    Messaggi
    260
    [QUOTE]Originariamente inviato da Scara95
    Sei sicuro che il tuo codice venga copilato O_o
    codice:
    nomeT[15], cognomeT[30], telefonoT[10];
    errore!

    Si me lo fa compilare!

    Cmq per quanto riguarda la fgets() leggo che serve per prendere dati da un file e inserirli in un array di caratteri. Correggimi se sbaglio.

  7. #7
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Originariamente inviato da Fix87
    Si me lo fa compilare!
    Che dici ? E devi anche chiederti se ha senso quella linea ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2011
    residenza
    Firenze
    Messaggi
    260
    Beh ho "adattato" quella linea perchè volevo inserire il tutto in un solo array di caratteri ma non me lo faceva fare con scanf perchè appena inserivo lo spazio si fermava. Bene ho girato un po' in rete e ho trovato scritto che al posto di inserire un puntatore ad un file si può inserire il flusso stdin che legge da tastiera, quindi verrebbe fuori una cosa del genere?

    int addContact(){
    FILE*f;
    char voce[50];
    f=fopen("rubrica.txt","a");
    printf("Inserisci cognome, nome e telefono: ");
    fgets(voce, 50, stdin);
    fputs("%s\n",f);
    fclose(f);
    return 0;
    }

  9. #9
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Scusa ... ma quale compilatore usi?

    Sei sicuro di compilare quella linea ?

    Hai capito di cosa si parla? Mi riferisco a quella che ti è stata già fatta notare

    codice:
    //Trovare contatto/i
    int searchContact(){
    FILE*f;
    nomeT[15], cognomeT[30], telefonoT[10];
    f=fopen("rubrica.txt","r");
    fscanf(f,"%s",cognomeT);
    fscanf(f,"%s",nomeT);
    fscanf(f,"%s",telefonoT);
    printf("%s %s %s",cognomeT,nomeT,telefonoT);
    fclose(f);
    return 0;
    }
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  10. #10
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Mi stai prendendo in giro vero?
    Dimmi che compilatore usi che lo tolgo direttamente dalla lista delle possibilità O_O
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

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 © 2025 vBulletin Solutions, Inc. All rights reserved.