PDA

View Full Version : [c++]file


ndakota
01-04-2007, 00:33
salve, qualcuno avrebbe qualche idea di programma che potrei fare che c'entra con lo scrivere/leggere file? visto che ho una decina di giorni di vacanza volevo fare qualcosa di carino da mandare al prof.. considerate che sono in terza non abbiamo fatto molto: strutture di controllo,stringhe,array,funzioni e appunto come ultimo argomento i file.. grazie :D

cataleen
01-04-2007, 01:09
Leggi un pò qua.
http://www.cplusplus.com/doc/tutorial/files.html

ndakota
01-04-2007, 13:18
Leggi un pò qua.
http://www.cplusplus.com/doc/tutorial/files.html

cavoli certo che in inglese.. poi sembra una guida.. posso stare tranquillo che lì dentro trovo uno spunto per fare un qualcosa di carino oppure non hai capito cosa ho chiesto?

skerdz
01-04-2007, 13:32
Ciao ndakota.
Coi file ne puoi fare di cose, ma se insieme ai file usi qualcos'altro viene ancora meglio.

Prova a fare un gioco di dadi che inventi te, con regole tue, che gestisce anche una classifica dei giocatori, e le info per la classifica si trovano su file. Qui ti puoi sbizzarrire come vuoi.

Buon divertimento

Daniel

ndakota
01-04-2007, 13:37
Ciao ndakota.
Coi file ne puoi fare di cose, ma se insieme ai file usi qualcos'altro viene ancora meglio.

Prova a fare un gioco di dadi che inventi te, con regole tue, che gestisce anche una classifica dei giocatori, e le info per la classifica si trovano su file. Qui ti puoi sbizzarrire come vuoi.

Buon divertimento

Daniel

qualcos'altro del tipo? perchè posso anche studiare nel caso.. comunque mi piace la tua idea grazie :)
a me venivano in mente solo cose banalissime..

skerdz
01-04-2007, 13:46
Prova a farlo, non è difficile.
E' stato il mio primo programma che ho fatto in C, in C++ non cambia quasi nulla, quindi se hai problemi chiedi pure.

Ciao

DeMoN3
10-04-2007, 11:33
salve...discussione vecchiotta ma almeno centra con i file e il c++ ...
io a differenza di ndakota ho il problema precedente...ovvero come usare i file.Praticamente ho un programma con una classe al cui interno vi sono 2 matrici,alcune variabili che mi servono x lavorarci e qualche funzione...
le domande sono:le funzioni di carica e salva le metto dentro o fuori la classe??
e poi...come diavolo uso fopen,fclose,fwrite e fread?L'anno scorso,a fine 3a,il prof ha avuto la bella idea di darci lui stesso le funzioni senza spiegarcele,e quest'anno quella lince dell'assistente di laboratorio,pensando che quindi conosciamo già i file,ci ha dato sto programma che carica e salva,ma praticamente io conosco i file come la cucina tradizionale koreana...e premetto che non conosco minimamente la korea :P

tomminno
10-04-2007, 13:56
salve...discussione vecchiotta ma almeno centra con i file e il c++ ...
io a differenza di ndakota ho il problema precedente...ovvero come usare i file.Praticamente ho un programma con una classe al cui interno vi sono 2 matrici,alcune variabili che mi servono x lavorarci e qualche funzione...
le domande sono:le funzioni di carica e salva le metto dentro o fuori la classe??
e poi...come diavolo uso fopen,fclose,fwrite e fread?L'anno scorso,a fine 3a,il prof ha avuto la bella idea di darci lui stesso le funzioni senza spiegarcele,e quest'anno quella lince dell'assistente di laboratorio,pensando che quindi conosciamo già i file,ci ha dato sto programma che carica e salva,ma praticamente io conosco i file come la cucina tradizionale koreana...e premetto che non conosco minimamente la korea :P

fopen,fclose,fwrite e fread sono C, in C++ ci sono fstream,ifstream,ofstream.


ifstream inFile("file.txt");
if (inFile.is_open())
{
//leggi il file riga riga
string buffer;
while(getline(inFile,buffer))
{
...
}
inFile.close();
}


Se i file sono binari meglio usare il metodo read per la lettura


ifstream inFile("file.bin", ios::binary);
if(inFile.is_open())
{
inFile.seekg (0, ios::end);
int length = inFile.tellg();
inFile.seekg (0, ios::beg);

char * buffer = new char[length];
inFile.Read(buffer,length);

...

inFile.close();
}

DeMoN3
10-04-2007, 14:21
scusa ma nn è che ci abbia capito molto...

tomminno
11-04-2007, 00:02
scusa ma nn è che ci abbia capito molto...

Una letturina ad un qualunque manuale del C++ ti sarebbe di aiuto. ;)

Se magari cominci con il dire cosa non hai capito, sarebbe già un passo avanti.

DeMoN3
11-04-2007, 08:46
il manuale ce l'ho..."guida al c++" della jackson libri...ma i file non li spiega praticamente x nulla...lascia giusto una pagina in appendice...
intendevo che nn ho capito nulla del codice che hai postato...:muro:

tomminno
11-04-2007, 10:24
il manuale ce l'ho..."guida al c++" della jackson libri...ma i file non li spiega praticamente x nulla...lascia giusto una pagina in appendice...
intendevo che nn ho capito nulla del codice che hai postato...:muro:

Non ci credo che sul libro non trovi niente sugli stream del C++.
Non sarebbe un libro sul C++.

Comunque una rapida spiegazione al codice che ho postato:
ifstream è la classe per la lettura dei file nel costruttore il primo parametro è il nome del file da aprire, il secondo la modalità di apertura.
is_open() verifica che l'apertura del file sia andata a buon fine.
getline è autoesplicativa: legge una riga di testo.


inFile.seekg (0, ios::end);
int length = inFile.tellg();
inFile.seekg (0, ios::beg);


serve per trovare la lunghezza del file da usare poi per istanziare un buffer di lunghezza sufficiente a contenere tutti i dati (certamente non il metodo ideale nel caso di file di grosse dimensioni, ma per cominciare va bene).

Read legge una quantità di dati pari al secondo parametro e li scrive sul primo parametro.
In ultimo close() chiude il file.

Niente di così complicato.

DeMoN3
11-04-2007, 10:46
vabbè,allora ora mi studio cisco e oggi pomeriggio provo a far questo maledetto programma :\
una domanda...posso copiare l'intera classe in una botta sola o devo copiare variabile x variabile?

DeMoN3
11-04-2007, 17:05
scusami,sto cercando di compilare ma mi dà questo errore...nn mi riesce a capire il problema...

6 D:\Programma per sistemi\Nuova cartella\main.cpp new types may not be defined in a return type
6 D:\Programma per sistemi\Nuova cartella\main.cpp return type specification for constructor invalid


Il codice è il seguente(ntr metto solo le parti incriminate)

class matrice
{
private:
int m[1000][1000];
int m2[1000000][3];
int grandezza;
int maggiore;
int riga;
int colonna;
int nullo;
int somma_a;
int somma_b;
int cont;
int cont2;
int confronto(int somma_a,int somma_b);
void crea_tabella();
//void salva_matrice();
//void carica_matrice();

public:
matrice();
void somma();
void crea_matrice_random();
void crea_matrice();
//void visualizza_tabella();
}


matrice::matrice()
{
cout<<"Quanto sarà lungo il lato della matrice? ";
cin>>grandezza;
for(cont=0;cont<grandezza;cont++)
{
for(cont2=0;cont2<grandezza;cont2++)
{
m[cont][cont2]=0;
}
}
for(cont=0;cont<grandezza*grandezza;cont++)
{
for(cont2=0;cont2<3;cont2++)
{
m2[cont][cont2]=0;
}
}
}