Problème copie de fichier C/Linux - Programmation
Marsh Posté le 23-03-2002 à 18:52:27
?
MAX = 512 et MAXOCT = 256 ?
ben gaffe, tu risque des soucis avec ta ligne :
nb=fread(octetslus,sizeof(char), MAX, fichier1
globalement, tu peux lire MAX (soit 512) octets dans un tableau de MAXOCT (256) octets .
ce qui n'est pas bon
donc :
nb=fread(octetslus,sizeof(char), MAXOCT, fichier1
Ensuite, a l'ouverture de tes fichiers, ouvre en "rb" plutot qu'en r
fichier1=fopen(fichieracopier,"rb" );
fichier2=fopen(nomcopie,"wb" );
Ensuite :
fseek (fichier1,pos,SEEK_SET);
avec pos = 50
ben tiens, fais le calcul : 123-50 = 73
devine d'ou viens l'erreur
vire moi cette ligne et tout rentrera dans l'ordre
Pourquoi tu l'as mise dis moi ??
[jfdsdjhfuetppo]--Message édité par chrisbk--[/jfdsdjhfuetppo]
Marsh Posté le 23-03-2002 à 19:44:45
pkoi bah euh...
parce que le prof l'avait mise
en tout cas merci chrisbk
Marsh Posté le 23-03-2002 à 19:45:17
juste une kestion...
rb = ?
Marsh Posté le 23-03-2002 à 19:50:29
"read binary"
Ça évite notemment de convertir les 0x0A et 0x0D en retour de ligne (0A sous Linux, 0D0A sous Windows, si je me souviens bien)
Marsh Posté le 23-03-2002 à 18:28:16
Salut à tous,
je dois faie un "mini-shell" sous nux qui comprend notamment une fonction copier que voilà :
void cop_fic(){
int nb,pos=50;
FILE *fichier1, *fichier2;
char octetslus[MAXOCT];
char fichieracopier[MAX], nomcopie[MAX];
printf("\n Quel fichier voulez-vous copier ? \n" );
scanf("%s", fichieracopier);
printf("test" );
printf("\n Quel nom voulez-vous donner à votre copie ? \n" );
scanf("%s", nomcopie);
fichier1=fopen(fichieracopier,"r" );
fichier2=fopen(nomcopie,"w" );
if (fichier1==NULL)
printf("\n error" );
else
{ printf("\n pas d'error" );
fseek (fichier1,pos,SEEK_SET);
while ( (nb=fread(octetslus,sizeof(char), MAX, fichier1)) >0 )
{
fwrite(octetslus, sizeof(char),nb,fichier2);
}
fclose(fichier1);
fclose(fichier2);
}
}
avec MAX défini à 512 et MAXOCT à 256
Le problème est que quand je copie un fichier texte classique de 360ko la fonction marche. Par contre avec un fichier de seulement 123 octets le fichier copié n'en fait que 73. Est-ce que qqn pourrait m'expliquer où est le problème?
PS : Comme doit le montrer le sujet et le code "Big débutant inside ©"
---------------
Le tout c'est d'y croire! DaBZHWDT site : www.setibzh.com