Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [C] Salvare dati utente in formato testo

    Salve ragazzi ho scritto per "svago" questo programma che si chiama Facebook_Dev; in sostanza questo programma permette di inserire una mail, una password e chiede all'utente se vuole salvare i suoi dati in formato testo! Il programma va bene , l'unica cosa è che quando inserisco una mail ad esempio: pippobaudo@hotmail.it , quando apro Salvataggio.txt , nel campo "la tua username" trovo solo dei caratteri alfanumerici ovviamente non corrispondenti alla mail, per così dire, digitata dall'utente! Qualcuno saprebbe spiegarmi perchè?

    codice:
    #include<iostream>
    #include<stdio.h>
    #include<cstdlib>
    #include<cstring>
    #include<iomanip>
    #include<windows.h>
    using std::setw;
    
    
    using namespace std;
    
    
    void UserPass( char pass[],char username[] ,const int n,const int m){
    
    
    	cout<<"\nUsername: ";
    	for(int i=0;i<n;i++){
    		cin>>username[i];
    	if(strlen(username)<=n){
    			break;
    		}
    	
    	}
    	cout<<"\nPassword: ";
    	fflush(stdin);
    	for(int i=0;i<m;i++){
    		
    		cin>>pass[i];
    }
    
    
    }
    
    
    void Scelta( char scelta,char pass[], char username [],const int n,const int m ){
    	fflush(stdin);
    	cout<<"\nVuoi salvare la tua pass e user in .txt? Y o N: ";
    	cin>>scelta;
    	
    	switch(scelta){
    		case 'Y':
    			case 'y':
    				cout<<"\nAcquisizione dati...\n";
    				Sleep(3000);
    				FILE *fp;
    				fp=fopen("Salvataggio.txt","w");
    				
    				if(fp==NULL){
    					cout<<"Errore apertura file!";
    				}
    				fprintf(fp,"     ____________FACEBOOK-DEV 2.0__________     \n");
    				fprintf(fp, "La tua username: ");
    				for(int i=0;i<strlen(username);i++){
    					fprintf(fp,"%c",username[i]);
    				}
    				fclose(fp);
    				FILE *fp1;
    				fp1=fopen("Salvataggio.txt","a");
    				if(fp1==NULL){
    					cout<<"Errore apertura file!";
    				}
    				fprintf(fp1, "\nLa tua password: ");
    				for(int i=0;i<m;i++){
    					fprintf(fp1,"%c",pass[i]);
    				}
    				fprintf(fp1,"\n      ______NON RISPONDERE A QUESTA MAIL- AUTOMATICA______      \n");
    			fclose(fp1);	 
    			cout<<"\nControlla nella cartella!!! "<<endl;
    	        Sleep(2000);
    
    
    			break;
    		
    		default:
    			cout<<"Grazie per averci scelto!! ";
    			break;
    	}
    }
    
    
    
    
    int main () {
    	const int n=23;
    	const int m=8;
    	char pass[m],username[n];
    	char scelta;
    	cout<<"        ______________FACEBOOK-DEV 2.0______________       \n";
    	cout<<"\nDigita 10 cartteri per User - 8 caratteri per Pass ";
        UserPass(pass,username,n,m);
        Scelta(scelta,pass,username,n,m);
    	return 0;
    	
    }

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Ci sono un po' di errori ed incongruenze e non dovrebbe neanche compilare.

    Intanto la funzione Scelta non può usare la variabile scelta in quel modo. La variabile

    char scelta;

    deve essere locale (all'interno della funzione Scelta) e non nel main.
    Di conseguenza non va passata alla funzione Scelta che non deve averlo come argomento.

    Poi l'input non va fatto con le for. Basta una semplice

    cin >> username;

    cin >> pass;

    e le scritture su file con

    fprintf(fp, "%s\n", username);
    fprintf(fp, "%s\n", pass);

    a parte il fatto che non dovresti usare la fopen/fprintp ma fstream di c++
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Quote Originariamente inviata da oregon Visualizza il messaggio
    Ci sono un po' di errori ed incongruenze e non dovrebbe neanche compilare.

    Intanto la funzione Scelta non può usare la variabile scelta in quel modo. La variabile

    char scelta;

    deve essere locale (all'interno della funzione Scelta) e non nel main.
    Di conseguenza non va passata alla funzione Scelta che non deve averlo come argomento.

    Poi l'input non va fatto con le for. Basta una semplice

    cin >> username;

    cin >> pass;

    e le scritture su file con

    fprintf(fp, "%s\n", username);
    fprintf(fp, "%s\n", pass);

    a parte il fatto che non dovresti usare la fopen/fprintp ma fstream di c++
    Ciao Oregon, grazie per aver risposto! Il codice così come postato complia, lo giuro, so che non mi crederaii, l'unico problema era che non scriveva nel file Salvataggio.txt la mail ! Ma come faccio poi a poter scrivere senza usare la for per username e pass! Cioè sono due vettori di tipo char! Nel senso non devo memorizzare per ogni posizione un carattere??Per la variabile " scelta " hai ragione, infatti ieri stesso la corressi da solo

    Poi ho usato fprintf/fopen perché non conoscevo fstream infatti ho riportato anche la libreria del C
    codice:
     #include<stdio.h>
    Ultima modifica di AmedeoFalco; 24-01-2018 a 17:47

  4. #4

    Codice corretto

    Posto il codice funzionante! Grazie a tutti!

    codice:
    #include<iostream>
    #include<stdio.h>
    #include<cstdlib>
    #include<cstring>
    #include<iomanip>
    #include<windows.h>
    using std::setw;
    
    
    using namespace std;
    
    
    void UserPass( char pass[],char username[] ,const int n,const int m){
    
    
    	cout<<"\nUsername: ";
    	cin>>username;
    
    
    		
    fflush(stdin);
    	cout<<"\nPassword: ";
    	cin>>pass;
    }
    
    
    void Scelta(char pass[], char username [],const int n,const int m ){
    	fflush(stdin);
    	char scelta;
    	cout<<"\nVuoi salvare la tua pass e user in .txt? Y o N: ";
    	cin>>scelta;
    	
    	switch(scelta){
    		case 'Y':
    			case 'y':
    				cout<<"\nAcquisizione dati...\n";
    				Sleep(3000);
    				FILE *fp;
    				fp=fopen("Salvataggio.txt","w");
    				
    				if(fp==NULL){
    					cout<<"Errore apertura file!";
    				}
    				fprintf(fp,"     ____________FACEBOOK-DEV 2.0__________     \n");
    				fprintf(fp, "La tua username: ");
    				
    					fprintf(fp,"%s",username);
    				
    				fclose(fp);
    				FILE *fp1;
    				fp1=fopen("Salvataggio.txt","a");
    				if(fp1==NULL){
    					cout<<"Errore apertura file!";
    				}
    				fprintf(fp1, "\nLa tua password: ");
    			    fprintf(fp1,"%s",pass);
    				
    				fprintf(fp1,"\n      ______NON RISPONDERE A QUESTA MAIL- AUTOMATICA______      \n");
    			fclose(fp1);	 
    			cout<<"\nControlla nella cartella!!! "<<endl;
    	        Sleep(2000);
    
    
    			break;
    		
    		default:
    			cout<<"Grazie per averci scelto!! ";
    			break;
    	}
    }
    
    
    
    
    int main () {
    	const int n=40;
    	const int m=40;
    	char pass[m],username[n];
    
    
    	cout<<"        ______________FACEBOOK-DEV 2.0______________       \n";
    	cout<<"\nDigita 10 cartteri per User - 8 caratteri per Pass ";
        UserPass(pass,username,n,m);
        Scelta(pass,username,n,m);
    	return 0;
    	
    }

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,462
    Il file lo apri una sola volta e ci scrivi tutte le stringhe, alla fine lo chiudi.
    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.