Problème avec la fonction read du C sous linux. [Résolu]

Signaler
Messages postés
518
Date d'inscription
dimanche 2 décembre 2001
Statut
Membre
Dernière intervention
10 novembre 2007
-
Messages postés
518
Date d'inscription
dimanche 2 décembre 2001
Statut
Membre
Dernière intervention
10 novembre 2007
-
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

Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
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
Messages postés
518
Date d'inscription
dimanche 2 décembre 2001
Statut
Membre
Dernière intervention
10 novembre 2007
3
Thanks, ca marche !!