Aprire un file

di il
6 risposte

Aprire un file

Sò che ultimamente stò postando molte domande sullo stesso argomento ma è solamente perchè mi stò esercitando visto che i file sono l'argomento che porteremo fino alla fine della scuola quindi la mia domanda è se io volessi creare un nuovo file dando la possibilità all'operatore di scegliere il nome come dovrei fare? ho pensato a questo,ma non funziona:

#include <iostream>
#include <stdio.h>
#include<fstream>
using namespace std;
int main () {
  
	FILE *Pfile;
	char *vt[10],nome[10];
	cout << "inserisci il nome del file da creare\n";
	cin>>nome;
	Pfile=fopen(nome,"w+");
	
	cout << "inserisci il contenuto del file\n";
	cin>>vt;
	fputs(vt,Pfile);
	fclose(Pfile);
    return 0;
}



grazie e scusate il disturbo

6 Risposte

  • Re: Aprire un file

    Ti faccio una domanda: Cosa vi fanno studiare a scuola? C oppure C++? Hai messo su un programma che in 10 righe esprime il modo di insegnare "macabro" del tuo insegnante. Nella prossima risposta ti dico anche il perche.
  • Re: Aprire un file

    Come mai?? comunque il mio prof fino all'anno scorso faceva turbo pascal solo l'anno scorso si è aggiornato per il c/c++ noi comunque abbiamo studiato il c l'anno scorso e quest'anno studiamo il c++
  • Re: Aprire un file

    Allora se quest'anno studiate il C++ mi dici cosa sono queste:
    
    #include <stdio.h>
    ....
    FILE *Pfile;
    char *vt[10],nome[10];
    ....
    
    Pfile=fopen(nome,"w+");
    ....
     fputs(vt,Pfile);
       fclose(Pfile);
    ....
    
    i pezzettini del codice sopra sono tutte reminiscenze del C che hanno poco a che vedere col C++
    in C++ il modo corretto di fare il tuo programmino è:
    
    #include <iostream>
    #include <string>
    #include <fstream>
    
    using namespace std; //sconsigliato ma va bene x programmini
    
    int main( void )
    {
    	
    	cout << "inserisci il nome del file da creare" << endl;
    	string nomeFile;
    	cin >> nomeFile;
    	fstream file(nomeFile.c_str(),ios::out);
    
    	if(file.good())
    	{
    		cout << "inserisci il contenuto del file" << endl;
    		string contenuto;
    		cin.ignore();
    		getline(cin,contenuto);
    		file << contenuto;
    		file.close();
    	}
        return 0;
    }
    
  • Re: Aprire un file

    Mi credi se ti dico che queste cose non ci sono state proprio spiegate?? se per piacere mi potresti spiegare a cosa servono queste linee di codice mi faresti un piacere in particolare queste qui:
    
    
    
    
    using namespace std; //sconsigliato ma va bene x programmini
    (perchè è sconsigliato?? è proprio una delle cose che ci consiglia sempre il prof)
       
    
       fstream file(nomeFile.c_str(),ios::out);//cosa vuol dire ios::out è un metodo di qualche oggetto??
    
          cin.ignore();//queste procedure a cosa servono?? e perchè gli passi cin??
          getline(cin,contenuto);
         
     
    
    
  • Re: Aprire un file

    
    using namespace std; //sconsigliato ma va bene x programmini
    
    ti dico perche è sconsigliato.
    tu hai il namespace std che contine un casino di funzioni. Poi un bel giorno ti fai un tuo programma e fai una funzione col un nome UGUALE a una della funzioni del namespace std.Quando vuoi chiamare la tua funzione il compilatore PUO' andare in pallone perche tu non hai specificato quale funzione vuoi usare: quella del namespace std oppure la tua
    
    tua funzione:
    void funzione(int);
    funzione in namespace std:
    void funzione(int); //è inventato non esiste sta funzione
    
    quindi soluzione:
    togli il famoso using namespace std e fai.
    funzione(3) //chiami la tua funzione così.
    std::funzione(3) //chiami la funzione del namespace std;

    Per il resto siccome il prof non ha spiegato un tubo di C++ ma sta faccendo un mix delle cose che sa e delle cose che LUI sta imparanado non te li spiego se no faccio io il prof e non è il mio mestiere. (anche perche non basta un forum).

    Quindi siccome lui ha spiegato il FILE * (che si usa in C ma non in C++) il tuo programmino diventa.
    
    #include <stdio.h>
    
    int main () 
    {
    	FILE *Pfile = NULL;
    	char vt[10],nome[10];
    	char c;
    	printf("inserisci il nome del file da creare\n");
        scanf("%s",nome);
    	Pfile=fopen(nome,"w+");
    	if(Pfile != NULL)
    	{
    		printf("inserisci il contenuto del file\n");
    		while ((c = fgetc(stdin)) != '\n' && c != EOF); 
    		//un modo per eliminare il contenuto del stdin
    		fgets(vt,9,stdin);
    		//9 perche il contenuto l'hai messo non + grande di 10 caratteri
    		// e devi lasciare un posto per il terminatore di stringa
    		fputs(vt,Pfile);
    		fclose(Pfile);
        }
    	return 0;
    }
    
    da notare che using namespace std è sparito, iostream e fstream sono spariti perche non fanno parte del C.
  • Re: Aprire un file

    Grazie!! vorrei solo capire come caspita fa' ad insegnarmi il c++ questo prof se fa' un mix tra i due linguaggi!! bah ora mi spiego perché molti file sorgenti non li riuscivo mai a capire perché ha sempre fatto un casino tra i due linguaggi!! e molte funzioni non le sapeva nemmeno lui quindi ha pensato bene di non menzionarle nemmeno!! pensa che quando ha spiegato i puntatori non ci ha spiegato nemmeno a cosa serve la malloc(che io conosco 1 po' perché ho visto su internet) oppure quando ha spiegato gli alberi non ci ha fatto vedere la logica per inserire e nemmeno come funzionano a livello di codice i metodi di attraversamento!! ma io mi chiedo com'è possibile! e non possiamo nemmeno lamentarci visto che frequento un iti informatico e metterti contro il prof di informatica vuol dire metterti vicino alla bocciatura anche se ho buoni voti visto che 4/5 del giudizio lo deve far lui! fortuna che io lo assecondo sempre e faccio sempre i programmi come vuole lui al- ho 7 7 7 scritto orale e pratico xd
Devi accedere o registrarti per scrivere nel forum
6 risposte