PDA

View Full Version : [C-C++]


Arthemis
13-11-2004, 20:38
Ciao a tutti volevo sapere se esisteva 1 guida (no i reference) per interagire con i files in C o C++ decidete voi.
Qualcosa che faccia degli esempi concreti.Magari anke in pdf
ciao ciao!:sofico:

VegetaSSJ5
13-11-2004, 23:35
cosa intendi per interagire con files c/c++?
ti serve per caso una guida per iniziare a programmare in c/c++?

Arthemis
14-11-2004, 08:16
A si scusa tantissimo! mi sono dimenticato di spiegarmi.(perchè questo post l'ho fatto su altri 2 forum e me so scordato).
Intendo copiare,eliminare e creare files.
La piattaforma è Win(98Se) ma non penso che influisca piu di tanto.Se in generale conoscete 1 bella guida in pdf in C completa delle basi e oltre (cose piu avanzate) datemi anche quella ;)

Grazie tanto in anticipo!
CIAO CIAO!

Banus
14-11-2004, 09:02
Originariamente inviato da Arthemis
Intendo copiare,eliminare e creare files.
Quello lo puoi fare tranquillamente con Notepad visto che sono semplici file di testo :p

Però per vedere qualcosa in azione ti serve un compilatore, e se non sei un maledetto genio del male credo non ti dispiaccia avere un programma che evidenzi la sintassi del linguaggio, compili, faccia il debug a runtime... un IDE insomma :D

Arthemis
14-11-2004, 09:15
Qualcosa mi dice che non hai capito nulla :P
io devo solo usare funzioni che creano, cancellano e copiano files
basta...nn so cosa centri con quello ke hai detto tu :)
:p ;)

Banus
14-11-2004, 09:36
Scusami :p

Arthemis
14-11-2004, 09:38
Hai capito ora cosa intendo? cmq io ti ho aggiunto a icq se lo apri 1 attimo parliamo! ;)

Arthemis
14-11-2004, 10:46
Questo è 1 pezzo di codice mi dite che c'è di sbagliato visto che se eseguo mi da 1 errore di windows che mi dice Errore in kernel32.

void leggi_file()
{
FILE *file;
char Path[300];
char buf[512];
char d;
int s[512];
int t;
printf("[Read_File] ");
printf("Specifica l'indirizzo\n");
scanf("%s",Path);
file=fopen(Path,"R");
t=fread(buf,1,512,file);
for(int i=0;i<512;i++)
{
printf("%c",buf[i]);
}
fclose(file);
scanf("%c",&d);
}

VegetaSSJ5
14-11-2004, 10:50
il consiglio di banus era corretto: devi scaricarti un ide, scarica dev-c++ dal qui

http://prdownloads.sourceforge.net/dev-cpp/devcpp4990setup.exe?download

poi ti serve una guida per il C che arrivi almeno a trattare i file. ce ne sono migliaia online, una è questa. se non ti piace fai una ricerca su google:

http://programmazione.html.it/c/

Arthemis
14-11-2004, 10:52
Si ma vi ho postato il codice vedete qualcosa che non va?:cry: :muro:

cionci
14-11-2004, 11:46
Originariamente inviato da Arthemis
Si ma vi ho postato il codice vedete qualcosa che non va?:cry: :muro:
Probabilmente questo:

file=fopen(Path,"r");

Banus
14-11-2004, 12:18
Originariamente inviato da cionci
Probabilmente questo:

file=fopen(Path,"r");
Ho provato a compilare e quello lo prende, ho controllato anche se il puntatore è nullo.
Invece mi dà una violazione di accesso su:

t=fread(buf,1,512,file);

Anche provando a ridurre il buffer continua a darmela.

anx721
14-11-2004, 12:32
void leggi_file()
{
FILE *file;
char Path[300];
char buf[512];
char d;
int s[512];
int t;
printf("[Read_File] ");
printf("Specifica l'indirizzo\n");
scanf("%s",Path);
file=fopen(Path,"r");
t=fread(buf,1,512,file);
if(file){
for(int i=0;i<512;i++)
printf("%c",buf[i]);

fclose(file);
}
scanf("%c",&d);
}

file=fopen(Path,"r"); non file=fopen(Path,"R");


Perche non segui il mio consiglio di leggerti la reference su

http://www.cplusplus.com/ref/

ci sono esempi cocreti per tutte le funzioni che lavorano sui file, esempi su come ottenere la dimensione di un file, su come leggerlo tutto, ecc ecc...

anx721
14-11-2004, 12:36
Ecco un esempio su come leggere un file completo:


/* fread example: read a complete file */
#include <stdio.h>
#include <stdlib.h>

int main () {
FILE * pFile;
long lSize;
char * buffer;

pFile = fopen ( "myfile.txt" , "rb" );
if (pFile==NULL) exit (1);

// obtain file size.
fseek (pFile , 0 , SEEK_END);
lSize = ftell (pFile);
rewind (pFile);

// allocate memory to contain the whole file.
buffer = (char*) malloc (lSize);
if (buffer == NULL) exit (2);

// copy the file into the buffer.
fread (buffer,1,lSize,pFile);

/*** the whole file is loaded in the buffer. ***/

// terminate
fclose (pFile);
free (buffer);
return 0;
}


Questo approccio per copiare va bene per piccoli file, se no è meglio utlizzare la fread in un ciclo, leggere dal file di origine e scrivere nel file di destinazione, fino a copiare tutto, magari utilizzando un buffer piu grosso.

cionci
14-11-2004, 12:37
Se metto la r minuscola mi funziona perfettamente...
E' nromale che nond ia un errore in fase di compilazione... Quello è un errore che può essere rilevato solo a runtime (probabilmente file sarà NULL)...

Banus
14-11-2004, 12:43
Originariamente inviato da cionci
Se metto la r minuscola mi funziona perfettamente...

Idem, controllato bene adesso :p

Arthemis
14-11-2004, 13:32
Grazie a tutti ma avevo gia risolto da solo ;)
a forza di provare come dice il mio "CARISSIMO AMICO"(ke mi ammazzerebbe) anx721.
Ora il mio problema è 1 altro: riuscire a svuotare delle array:
Ho riempito char stringa[10] e char comando[10] come faccio a svuotarle? è possibile? non posso fare altrimenti mi serve per memorizzarci altre stringhe dentro!

Grazie di tutto!:)

anx721
14-11-2004, 13:35
Bhe, basta memorizzarci i nuovi valori con la scanf o strcpy; se vuoi proprio azerarle basta mettere il caratere '\0' nella prima posizione

Arthemis
14-11-2004, 13:56
string[0]='\0';
cosi?
se non è cosi perfavore fammi 1 esempio

anx721
14-11-2004, 14:05
esatto