Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it L'avatar di alo
    Registrato dal
    Sep 2011
    Messaggi
    10

    [C++] Problema file .txt

    salve,
    ho un problema con un programma che sto srcivendo. Quando il programma genera i file member.txt e access_data.txt alla fine mi inserisce due caratteri in piu... chi mi puo spiegare perchè??
    Questo è il codice:
    codice:
    #include <iostream>
    #include <fstream>
    #include <stdlib.h>
    #include <sstream>
    using namespace std;
    
    #define space ' '
    #define newline '\n'
    #define tab '\t'
    
    //inizializing function
    void main_page();
    void reg_page();
    void reg_write();
    void access_page();
    void access_write();
    void pause();
    void cls();
    
    struct member {
    	char name[50];
    	char surname[50];
    	char year[4];
    };
    
    //global variable
    bool memb;
    
    //main function
    int main() {
        string syear;
        member a;
        member * p;
        p = &a;
    	do {
    		//call the main page function
    		main_page();
    		//if you aren't a member...
    		if (memb!=1) {
    			//start registration step
    			reg_page();
    			reg_write();
    			memb=true;
    			//end registration step
            }
    		//if you are a member...
    		access_page();
    		access_write();
    		memb=true;
        }while (memb=false, memb=true);
    }
    
    //main page function
    void main_page() {
    	cout << newline << newline << newline;
    	cout << tab << tab << "WELCOME TO LIBRARY";
    	cout << newline << newline << newline;
    	cout << tab << "ARE YOU A MEMBER? (1=si, 0=no) --> ";
    	cin >> memb;
    }
    
    //access page function
    void access_page() {
    	cout << newline << newline << newline;
    	cout << "Remember that the access data will be save, so if you aren't a member is better don't continue";
    	cout << newline << newline;
    	cout << tab << tab << "ACCESS:";
    	cout << newline << newline;
    }
    
    //write access_data.txt
    void access_write() {
        member a;
        member * p;
        p = &a;
    	fstream f2;
    	f2.open ("access_data.txt", ios::out);
    	cout << tab << tab << "NAME: ";
        cin >> p->name;
        f2 << p->name << tab;
        cout << tab << tab << "SURNAME: ";
        cin >> p->surname;
        f2 << p->surname << tab;
        cout << tab << tab << "BORN DATE: ";
        cin >> p->year;
        (stringstream) p->year;
        f2 << p->year;
        f2 << newline;
        f2.close();
    }
    
    //registration page function
    void reg_page() {
        cout << newline << newline << newline;
        cout << tab << tab << "REGISTRATION:";
        cout << newline << newline;
    }
    
    //write member.txt
    void reg_write() {
        member a;
        member * p;
        p = &a;
    	fstream f1;
    	f1.open("members.txt", ios::out);
        cout << tab << tab << "NAME: ";
        cin >> p->name;
        f1 << p->name << tab;
        cout << tab << tab << "SURNAME: ";
        cin >> p->surname;
        f1 << p->surname << tab;
        cout << tab << tab << "BORN DATE: ";
        cin >> p->year;
       (stringstream) p->year;
        f1 << p->year;
        f1 << newline;
        cout << newline << newline;
        cout << "REGISTRATION COMPLETE";
        f1.close();
    }
    
    void pause() {
        system("PAUSE");
    }
    
    void cls() {
    	system("CLS");
    }
    grazie in anticipo
    Media is the future!

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Che vuoi dire? Quali caratteri? E come fai a vedere che sono 2?

    Saranno i newline che inserisci?

    P.S. Il linguaggio va nel titolo ... vedi il regolamento del forum ..
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Utente di HTML.it L'avatar di alo
    Registrato dal
    Sep 2011
    Messaggi
    10
    quando apro i file member e access_data dopo l'anno ci sono dei caratteri...
    Media is the future!

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Beh, per cominciare, per l'elemento

    char year[4];

    della struttura, devi prevedere 5 caratteri e non 4 per il terminatore ...

    E poi ti consiglio di dare un'occhiata a questa linea

    while (memb=false, memb=true);

    perché non mi pare proprio corretta ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296

    Moderazione

    Originariamente inviato da oregon
    P.S. Il linguaggio va nel titolo ... vedi il regolamento del forum ..
    Quoto, e aggiungo che il titolo dovrebbe anche essere più significativo, come da Regolamento.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

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

  6. #6
    Utente di HTML.it L'avatar di alo
    Registrato dal
    Sep 2011
    Messaggi
    10
    si giusto
    grazie a tutti
    Media is the future!

  7. #7
    Utente di HTML.it L'avatar di alo
    Registrato dal
    Sep 2011
    Messaggi
    10
    ho modificato il codice in questo modo:
    codice:
    #include <iostream>
    #include <fstream>
    #include <stdlib.h>
    #include <sstream>
    using namespace std;
    
    #define space ' '
    #define newline '\n'
    #define tab '\t'
    
    //inizializing function
    void main_page();
    void reg_page();
    void reg_write();
    void access_page();
    void access_write();
    void pause();
    void cls();
    
    struct books {
    	char title[50];
    	char author[50];
    	char editor[50];
    	int pages[10000];
    };
    
    //global variable
    bool memb;
    
    //main function
    int main() {
    	do {
    		//call the main page function
    		main_page();
    		//if you aren't a member...
    		if (memb!=1) {
    			//start registration step
    			reg_page();
    			reg_write();
    			memb=true;
    			//end registration step
            }
    		//if you are a member...
    		access_page();
    		access_write();
    		memb=true;
        }while (memb=false);
    }
    
    //main page function
    void main_page() {
    	cout << newline << newline << newline;
    	cout << tab << tab << "WELCOME TO LIBRARY";
    	cout << newline << newline << newline;
    	cout << tab << "ARE YOU A MEMBER? (1=si, 0=no) --> ";
    	cin >> memb;
    }
    
    //access page function
    void access_page() {
    	cout << newline << newline << newline;
    	cout << "Remember that the access data will be save, so if you aren't a member is better don't continue";
    	cout << newline << newline;
    	cout << tab << tab << "ACCESS:";
    	cout << newline << newline;
    }
    
    //write access_data.txt
    void access_write() {
        char name[50];
    	char surname[50];
    	char year[5];
    
    	ofstream access("access_data.txt", ios::app);
    
    	cout << tab << tab << "NAME: ";
    	cin >> name;
    	cout << tab << tab << "SURNAME: ";
    	cin >> surname;
    	cout << tab << tab << "BORN DATE: ";
    	cin >> year;
    	(stringstream) year;
    	access << newline;
    	access << "----------------------" << endl;
    	access << "NAME: " << name << endl;
    	access << "SURNAME: " << surname << endl;
    	access << "BORN DATE: " << year << endl;
    	access << "----------------------" << endl;
    	access << newline;
    }
    
    //registration page function
    void reg_page() {
        cout << newline << newline << newline;
        cout << tab << tab << "REGISTRATION:";
        cout << newline << newline;
    }
    
    //write member.txt
    void reg_write() {
        char name[50];
    	char surname[50];
    	char year[5];
    
    	ofstream member("members.txt", ios::app);
    
    	cout << tab << tab << "NAME: ";
    	cin >> name;
    	cout << tab << tab << "SURNAME: ";
    	cin >> surname;
    	cout << tab << tab << "BORN DATE: ";
    	cin >> year;
    	(stringstream) year;
    	member << newline;
    	member << "----------------------" << endl;
    	member << "NAME: " << name << endl;
    	member << "SURNAME: " << surname << endl;
    	member << "BORN DATE: " << year << endl;
    	member << "----------------------" << endl;
    	member << newline;
    }
    
    void pause() {
        system("PAUSE");
    }
    
    void clear() {
    	system("CLS");
    }
    funziona alla grande
    Media is the future!

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.