Fonctions de gestion de fichier en binaire ??

Résolu
SnOOpss Messages postés 571 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 5 décembre 2013 - 12 mai 2005 à 21:22
SnOOpss Messages postés 571 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 5 décembre 2013 - 13 mai 2005 à 13:36
Bonjour.

Je suis en train d essayer de convertir un programme d'un autre langage et je cherche des fonctions particulieres, par exmple.




Ceci lit N bytes à partir de la position S dans le fichier et sauvegarde le résultat dans un variable binaire &binvar.



Ceci écrit N bytes du texte spécifié %var ou &binvar à un fichier
en partant de la position S. Toute information à partir de cette
position sera réécrite.




Ceci place le Nième byte de la variable &binvar à la valeur ascii spécifié.



Ceci cpoie M byte à partir de la position S dans la seconde &binvar
à la première &binvar à la position N. Ceci peut également être
utlisé pour copier des parties répétitives d'une &binvar à elle
même.




Si vous connaissez des fonctions quelquonques qui traitent du meme sujet je suis prenneur merci !!!

2 réponses

sebseb42 Messages postés 495 Date d'inscription dimanche 6 juillet 2003 Statut Membre Dernière intervention 9 novembre 2007 1
13 mai 2005 à 00:11
salut

-------------------------------------------------------------------------------------------------------
"Ceci lit N bytes à partir de la position S dans le fichier et sauvegarde le résultat dans un variable binaire &binvar."

///////////////////////////////////////////////////////////
char *buffer;
FILE *fd;

buffer = malloc(N + 1);
fd = fopen("ton_fichier", "rb"); // rb signifie read binary
fseek(fd, S, SEEK_SET); // depalcement dans le fichier
fread(buffer, sizeof(char), N, fd); // lecture de N caractere (ce sont des caracteres d'1 octet)
fclose(fd); // fermeture du fichier
// ici buffer est la variable qui t'interesse, il ne faut pas oublier free(buffer) quand tu n'en a plus besoin
///////////////////////////////////////////////////////////
-------------------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------------------
"Ceci écrit N bytes du texte spécifié %var ou &binvar à un fichieren partant de la position S. Toute information à partir de cetteposition sera réécrite."

///////////////////////////////////////////////////////////
FILE *fd;

fd = fopen("ton_fichier", "wb"); // wb pour write binary
// (comme pour l'exemple du dessus, il est preferable de tester la variable fd)
fseek(fd, S, SEEK_SET);
fwrite(ta_variable_var_ou_binvar, sizeof(char), N, fd); // ecriture de N caractere de 1 octet
fclose(fd);
///////////////////////////////////////////////////////////
-------------------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------------------
"Ceci place le Nième byte de la variable &binvar à la valeur ascii spécifié"

///////////////////////////////////////////////////////////
binvar[N] = la_lettre; // la_lettre est une variable de type char, et binvar char* (ou char[])
// (si binvar est un short* (ou short[]) par exemple, alors la_lettre doit etre un short
///////////////////////////////////////////////////////////

exemple :

int k = 4;
binvar[k] = 'a';
-------------------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------------------
"Ceci cpoie M byte à partir de la position S dans la seconde &binvarà la première &binvar à la position N. Ceci peut également êtreutlisé pour copier des parties répétitives d'une &binvar à ellemême."

///////////////////////////////////////////////////////////
memcpy(binvar1 + N, binvar2 + S, M);
///////////////////////////////////////////////////////////

si binvar1 et binvar2 sont des tableaux de short par exemple, alors met M * sizeof(short) a la place de M tout court.
aussi tu peux t'en servir pour copier des caracteres d'une chaine dans elle meme, mais dans ce cas fait bien attention a l'ordre des variable, sinon tu risque d'avoir une redondance de donners non critique pour ton application, mais critique pour la validiter de tes donners.
-------------------------------------------------------------------------------------------------------

voila, j'espere que ca peut t'aider :)
3
SnOOpss Messages postés 571 Date d'inscription samedi 3 avril 2004 Statut Membre Dernière intervention 5 décembre 2013
13 mai 2005 à 13:36
Terrible ca ca va au dela de mes espérances, en fait je ne m attendais
pas a ce que quelqu un aille jusqu'a me "fabriquer" les fonctions avec
des explications en prime.

En tout cas j'ai de quoi me demerder pour les autres.

Merci beaucoup !!!!
0
Rejoignez-nous