Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 17 su 17

Discussione: [c++] errore funzione

  1. #11
    Se inizio la rubrica, inserendo '1', va tutto bene.
    Invece se vorrei aggiungere un contatto, inserendo '2', il programma mi scrive su FILE, ma non rispetta il tracciato record.

    E' come se non riconosce il "write.seek", pero' non ho capito bene perche' mi da questo problema solo quando inserisco '2' (CIoe' aggiungi contatti).

  2. #12
    sapete aiutarmi?

  3. #13
    ci siete?

  4. #14
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466

    Moderazione

    Originariamente inviato da Salvatore_91
    ci siete?
    Gli utenti non sono a tua completa ed esclusiva disposizione: abbi la pazienza di attendere la risposta alla tua domanda, se c'è, senza intervenire a breve distanza di tempo con esortazioni inutili.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #15
    ok scusate

  6. #16
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    1,326
    Salvatore il problema si ha perché, quando fai l'aggiunta, apri il file in append. Non so questo cosa comporti, sta di fatto che la causa è sicuramente quella (infatti anche per la prima scrittura se provi ad aprire il file in modalità ios_base::app hai lo stesso problema).

    A questo punto io direi di aggirare il problema in questo modo: anziché scrivere le informazioni direttamente sul file, scrivile in un oggetto di classe "string" (quindi una stringa del C++, con tutte le comodità che ti offre la classe) aggiungendo opportuni spazi tra i dati. Una volta "costruita" la stringa, puoi scirvere tutto nel file con una sola istruzione di scrittura.

    Tieni presente questo: tu hai

    NOME poi dopo 16 spazi (20 - la lunghezza di "NOME") poi COGNOME e altri 13 spazi ( 20 - la lunghezza di "COGNOME") poi ancora NUMERO e 8 spazi ( 14 - lunghezza di "NUMERO") e infine EMAIL.

    Tenendo presenti le lunghezze di questi spazi bianchi, puoi "costruire" la stringa come ti dicevo sopra: ogni volta che immetti un'informazione (ad esempio il nome) con un ciclo iterativo aggiungi tanti spazi quanti ne servono per far venire allineata la prossima informazione, sfruttando la lunghezza della stringa che immetti (similmente a quanto facevi scrivendo direttamente sui file).

    So che è un piccolo casino, ma non mi viene in mente altro...
    every day above ground is a good one

  7. #17
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Sono d'accordo con YuYevon, ma puoi riscrivere la funzione semplicemente cosi'

    codice:
    void acquis_scritt(ofstream &write)
    {
     cout << "Inserisci  nome:"<<endl;
     cin >> nome;
     nome.resize(20);
     write << nome; 
    
     cout << "Inserisci  cognome:"<<endl; 
     cin >> cogn;
     cogn.resize(20);
     write << cogn; 
    
     cout << "Inserisci  numero:"<<endl; 
     cin >> numero;
     numero.resize(14);
     write << numero; 
    
     cout << "Inserisci  e-mail:"<<endl; 
     cin >> mail; 
     mail.resize(14);
     write << mail << endl;
    }
    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 © 2025 vBulletin Solutions, Inc. All rights reserved.