stella_650
11-07-2008, 16:18
Ciao a tutti.
Sto facendo una semplice prova con lseek per copiare un carattere alla volta il contenuto di un file in un altro.
Ho il seguente codice:
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <sys/wait.h>
#include <fcntl.h>
int main(int argc, char *argv[])
{
int fd,n,len,fd2;
char c;
if(argc!=3)
{
printf("Errore di esecuzione! <./out> <nomefile1> <nomefile2>\n");
exit(-1);
}
fd=open(argv[1],O_RDONLY);
fd2=open(argv[2],O_WRONLY);
n=lseek(fd,0,SEEK_SET); //mi sposto all'inizio del file
printf("Sono all'inizio del file in posizione %d\n",n);
len=lseek(fd,0L,2);//mi calcolo la lunghezza del file
lseek(fd2,0,SEEK_SET);//mi sposto all'inizio del secondo file
printf("La fine del file a %d\n",len);
while(n<len) //fintanto che c'è da leggere
{
printf("n prima in while vale %d\n",n);
read(fd,&c,1);
write(fd2,&c,1);
//spostati di una posizione nel file--->ERRORE!
n=lseek(fd,0,SEEK_CUR);
//printf("n vale %d\n",n);
}
close(fd);
close(fd2);
exit(0);
}
Come faccio nel while a spostarmi di una posizione in avanti con lseek??
Grazie a priori!
Sto facendo una semplice prova con lseek per copiare un carattere alla volta il contenuto di un file in un altro.
Ho il seguente codice:
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/stat.h>
#include <sys/wait.h>
#include <fcntl.h>
int main(int argc, char *argv[])
{
int fd,n,len,fd2;
char c;
if(argc!=3)
{
printf("Errore di esecuzione! <./out> <nomefile1> <nomefile2>\n");
exit(-1);
}
fd=open(argv[1],O_RDONLY);
fd2=open(argv[2],O_WRONLY);
n=lseek(fd,0,SEEK_SET); //mi sposto all'inizio del file
printf("Sono all'inizio del file in posizione %d\n",n);
len=lseek(fd,0L,2);//mi calcolo la lunghezza del file
lseek(fd2,0,SEEK_SET);//mi sposto all'inizio del secondo file
printf("La fine del file a %d\n",len);
while(n<len) //fintanto che c'è da leggere
{
printf("n prima in while vale %d\n",n);
read(fd,&c,1);
write(fd2,&c,1);
//spostati di una posizione nel file--->ERRORE!
n=lseek(fd,0,SEEK_CUR);
//printf("n vale %d\n",n);
}
close(fd);
close(fd2);
exit(0);
}
Come faccio nel while a spostarmi di una posizione in avanti con lseek??
Grazie a priori!