Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1790 connectés 

 


Dernière réponse
Sujet : Problème copie de fichier C/Linux
antp "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)

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
antp "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)
Rasta Knight juste une kestion...
 
rb = ?
Rasta Knight pkoi bah euh...
 
parce que le prof l'avait mise :D  
 
en tout cas merci chrisbk :jap:
chrisbk ?
 
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 :D
 
devine d'ou viens l'erreur :D
 
vire moi cette ligne et tout rentrera dans l'ordre
Pourquoi tu l'as mise dis moi ??

 

[jfdsdjhfuetppo]--Message édité par chrisbk--[/jfdsdjhfuetppo]

Rasta Knight 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 ©"

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)