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

  FORUM HardWare.fr
  Programmation
  C++

  Souci avec stdio.h

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Souci avec stdio.h

n°1253446
bkadoum
Posté le 25-11-2005 à 18:34:59  profilanswer
 

Quelqu'un a une idée pourquoi les fonctions putw() et putc() m'écrivent la valeure -1 alors quand j'entre 26???
Voilà la 2ème fois que je me percute à ce problème et me faut chaque fois 3h pour trouver la raison! Ca me dégoute un peu là...
C'est un bug?

mood
Publicité
Posté le 25-11-2005 à 18:34:59  profilanswer
 

n°1253478
scol30
Posté le 25-11-2005 à 20:08:48  profilanswer
 

avec un bout de code se serait plus facile à comprendre ton problème. J'ai du mal à mettre en cause les functions putw() ou putc() :-)
 
Stef

n°1253633
bkadoum
Posté le 26-11-2005 à 11:15:50  profilanswer
 

Le problème est tout bête. Tu lances ce programme, chez moi ça affiche -1 ...!
 

Code :
  1. #include <stdio.h>
  2. void main()
  3. {
  4. FILE *pFile;
  5. pFile = fopen("teste.dat", "w+" );
  6. if (pFile)
  7.  putw(26, pFile);
  8. rewind(pFile);
  9. printf("%d", getw(pFile));
  10. getchar();
  11. fclose(pFile);
  12. }

n°1253640
bkadoum
Posté le 26-11-2005 à 11:29:40  profilanswer
 

A mon avis c'est un bug, (uniquement chez moi peut-être), car en fait lorsque la valeure 26 est écrite, tout le reste des valeures écrites dans le fichiers sont égale à -1, ce qui cause un résultat désastrueux dans un programme plus complexe.
 
Mon environnement: WinXP, Visual C++

n°1253670
olivthill
Posté le 26-11-2005 à 12:18:36  profilanswer
 

:hello:  
C'est le problème classique de l'ouverture d'un fichier en mode texte au lieu d'une ouverture en mode binaire.
 
Comme 26 est un code non imprimable (puisqu'il est inférieur à 32 qui est la valeur de l'espce qui est le premier caractère de type texte), il faut faire une ouverture en mode binaire. De plus fputw marche avec les ficheir ouvert en mode binaire, pas en mode texte.
 
Donc il faut rajouter un petit "b" :

pFile = fopen("teste.dat", "wb+" );

n°1253680
videaste95
je ne sais rien !
Posté le 26-11-2005 à 12:37:15  profilanswer
 

  En plus 26 c'est 0x1A en hexadécimal, Caractère de fin de fichier en mode texte.

n°1253823
bkadoum
Posté le 26-11-2005 à 17:44:28  profilanswer
 

C'est donc ca! Merci :)

n°1253964
jesus_chri​st
votre nouveau dieu
Posté le 26-11-2005 à 21:33:31  profilanswer
 

et c'est du C ce code, pas du C++
Et, pour la 1000e fois sur ce forum, void main ca N'EXISTE PAS !!
 
il n'y a que int main()
si tu ne veux pas retourner de valeur, c'est optionnel dans le main, mais void c'est interdit.
 
Malheureusement Visual C++, le + répendu chez les débutants, et de nombreux bouquin citent et acceptent ce "void main" :(


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Souci avec stdio.h

 

Sujets relatifs
Souci avec l'API Win32Gros gros gros souci !!
[resolu] Petit souci sur le php de mon formulaire[php] petit souci regexp
[Résolu] Souci d'occupation mémoire[MySQL / Java] Petit souci avec les champs de type DATE
souci de dereferencement[Mailing] Petit souci ...
[Résolu][CSS] Souci avec un contenu variableSouci mise en forme CSS
Plus de sujets relatifs à : Souci avec stdio.h


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR