Afficher un message
Vieux 07/02/2009, 01h31   #12 (permalink)
Profil
Wolfi
Membre
Ancienneté  80%
Ancienneté 80%
 
Date d'inscription: mai 2006
Localisation: Rouen
Âge: 36
Pays :
Messages: 675
Téléchargements: 0
Uploads: 0
Merci: 1
Remercié 14 fois dans 7 Posts
Envoyer un message via ICQ à Wolfi Envoyer un message via AIM à Wolfi
Par défaut

while (position_courante<taille) <-- pour moi c'est cette etape qui fait la soustraction dont tu parles, mais par précaution je vais reverifier completement le prog, pour ce qui est du controle, pour savoir si le modifié est plus grand que l'original avant de démarrer, jte fais ca, c'est juste une ligne a rajouter

edit: alors apres revérif, je comprends vraiment pas de quel bug tu parles: je pars d'un fichier original plus grand qu'un fichier modifié, le programme se met a la fin du modifié et le complete avec des zéro jusqu'a ce que sa taille soit egale à l'originale Sinon j'ai rajouté un controle de taille pour voir si le modifié est plus grand que l'original, pour ce qui est de killer le batch, ce n'est pas possible facilement a l'interieur de mon prog de faire ca, par contre, si tu sais controler la valeur de retour d'un programme, je peux m'arranger pr faire un "return -1" en cas d'erreur et un "return 0" en cas de succes, ski te permet de controler et de fermer le batch si ca rate.

Citation:
/* ================================================== ========================= */
/* */
/* remp0.c */
/* (c) 2009 */
/* */
/* Remplit un fichier de 0 a partir de la fin */
/* */
/* ================================================== ========================= */
#include <stdio.h>
#include <stdlib.h>

/* Maintenant argv[1] est le premier argument, le fichier original
et argv[2] est le second argument, le fichier modifié! */
int main(int argc,char **argv){
printf("remp0 realise par Wolfi pour metagames-eu\n");

FILE *ori = NULL;
FILE *mod = NULL;

ori=fopen(argv[1],"r+b"); //ouverture du fichier en mode lecture/ecriture sans effacement

if (ori != NULL) {
long taille=0;
fseek (ori , 0 , SEEK_END);
taille = ftell (ori); // on a la taille du fichier
fclose(ori);

mod=fopen(argv[2],"a");
long taille_mod=ftell(mod); // on a la taille du fichier modifié
if ( (mod != NULL) && (taille_mod<taille)){
/* On va maintenant ajouter autant de 0 que necessaire a modinom */
long position_courante=ftell(mod); //on a l'offset en cours à la queue du fichier a modifier
while (position_courante<taille){
fputc(0,mod);
position_courante++;
}
fclose(mod);
puts("Patchage du fichier reussi");
}
else printf("Impossible d'ouvrir le fichier modifié ou celui-ci est plus grand que le fichier original.\n");
}
else{
// On affiche un message d'erreur si un des deux fichiers n'est pas present
printf("Impossible d'ouvrir le fichier original.\n");
}

return 0;
}
__________________
le loup est un loup pour le loup

Nintendo: N64, NGC
Sega: Dreamcast
Sony: PSP, PS3

Dernière modification par Wolfi ; 07/02/2009 à 01h40.
Wolfi est déconnecté   Réponse avec citation