PDA

View Full Version : gestione file binari in C


ultio
01-05-2003, 17:17
#include <io.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdio.h>


int main(int arc, char *agrv[]){
int sorgente, destinazione;
char buffer[1024];
int leggi_byte;
sorgente = open("ciao.mp3", O_BINARY);
destinazione = open("brutto.mp3", O_BINARY | O_TRUNC | O_CREAT, S_IWRITE);

while(!eof(sorgente)){
if(leggi_byte = read(sorgente, buffer, sizeof(buffer)) <= 0){
fprintf(stderr,"1");
return 0;;
}
else if(write(destinazione, buffer, leggi_byte) != leggi_byte){
fprintf(stderr,"2");
return 0;
}
}
close(sorgente);
close(destinazione);
return 0;
}

se lo faccio partire crea il file di destinazione ma lo lascia vuoto....
perchč???? :-(

ultio
01-05-2003, 20:33
aiutooooooooooo :cry: :cry: :cry: :cry: :cry: :cry:

l.golinelli
01-05-2003, 21:39
while(!feof(sorgente)){

ultio
02-05-2003, 14:01
cosėnon lo compila nemmeno :cry:

ultio
02-05-2003, 16:00
ho fatto un paio di prove e ho scoperto che non legge e non scrive niente, crea solo il file di destinazione... :eek:

cionci
02-05-2003, 20:18
Stai usando le syscall di Linux... Se vuoi usare il C standard devi usare le varie fread, fopen, fwrite, fclose...

Sinceramente non mi ricordo come si testa l'eof...in ogni caso credo che come parametro di apertura ci debba essere anche O_READ...
Per saperlo fai man open

ultio
04-05-2003, 18:01
grazie mille, ora riesco a leggere, ma non a scrivere :cry: :cry:



#include <stdio.h>
#include <stdlib.h>


void main(){
FILE *lettura;
int i, n;
char vet[1000000];
if ((lettura = fopen("a.zip","rb"))==NULL)
exit(1); /* Errore di apertura */
n = fread(vet,sizeof(int),1000000,lettura);
for (i=0; i<n; i++) printf("%d ",vet[i]);
fclose(lettura);




char ciao[3];
ciao[0] = 'c';
ciao[1] = 'i';
ciao[2] = 'a';

FILE *scrittura;
if ((scrittura = fopen("jjj.txt","wb"))==NULL)
exit(1);
fwrite(ciao, sizeof(int),1000000 , scrittura);
fclose(scrittura);

}

lo ho preso da una diapositiva dell'universitā di roma, ma non va :cry: :cry:

ultio
04-05-2003, 18:07
scusate, ho detto una c-----a, vā tutto, sono io che non sono capace a copiare :D :D
grazie di tutto