Problème avec la fonction read du C sous linux.

Résolu
cs_bouba Messages postés 518 Date d'inscription dimanche 2 décembre 2001 Statut Membre Dernière intervention 10 novembre 2007 - 15 janv. 2006 à 11:44
cs_bouba Messages postés 518 Date d'inscription dimanche 2 décembre 2001 Statut Membre Dernière intervention 10 novembre 2007 - 15 janv. 2006 à 15:11
Bonjour, j'ai un problème que je ne comprend pas avec la fonction read, le problème vient lorsque j'essai de lire 4 ocets à mettre dans un entier.
J'essai de faire

int tmp;
read(fd, &tmp, 4);
printf("%d\n", tmp);

L'affichage me donne 402653184 au lieu de 24
car lorsque je réalise ceci à la place j'ai bien 0 0 0 24

char tmp;
read(fd, &tmp, 1);
printf("%d\n", tmp);
read(fd, &tmp, 1);
printf("%d\n", tmp);
read(fd, &tmp, 1);
printf("%d\n", tmp);
read(fd, &tmp, 1);
printf("%d\n", tmp);

Sachant que précédemment j'ai déjà réalisé les mêmes lectures sur 4 ocets et que celà fonctionnait très bien je ne comprends pas quel est le problème !

Quelqu'un pige d'où peut provenir mon erreur ?

Merci.

Bouba

2 réponses

vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 14
15 janv. 2006 à 12:43
24=18h
Et tu remarques que 18000000h=402653184.
Dans ton fichier, tu dois donc avoir 24 0 0 0 et pas 0 0 0 24 (les poids faibles en premier).
De toutes facons si tu écris l'entier avec write, ca se fait automantiquement (heureusement!), donc normalement tu n'a pas à t'en soucier
3
cs_bouba Messages postés 518 Date d'inscription dimanche 2 décembre 2001 Statut Membre Dernière intervention 10 novembre 2007 3
15 janv. 2006 à 15:11
Thanks, ca marche !!
0
Rejoignez-nous