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

  FORUM HardWare.fr
  Programmation
  C++

  problème sur les fichiers (ouverture, fermeture, etc.) [résolu]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

problème sur les fichiers (ouverture, fermeture, etc.) [résolu]

n°228311
gobbaf
Posté le 15-10-2002 à 17:40:49  profilanswer
 

bonjour
 
J'ai dans un fichier *.txt (ici mnt.txt) une suite d'entiers séparés par des espaces ou des retour-chariots.
J'aimerais ouvrir le fichier et récupérer les entiers qui sont dedans afin de les mettre dans une matrice (pour pouvoir ainsi les manipuler).
Le prog. compile mais à l'éxécution j'ai une matrice remplie de 0.
Il y a quelquechose qui m'échappe dans la fonction mnt.

Code :
  1. /*==============================
  2. Travaux pratiques 2, exercice 1
  3. ===============================*/
  4. #include <stdio.h>
  5. #define TAILLE 12
  6. typedef int matrice[TAILLE][TAILLE];
  7. void mnt(matrice tab)
  8. {
  9. FILE *f;
  10. int i;
  11. int j;
  12. if ((f=fopen("mnt.txt","rt" ))==NULL)
  13.  printf("Ouverture non correcte.\n" );
  14. else
  15. {
  16.  for (i=1;i<TAILLE-2;i++)
  17.   for (j=1;j<TAILLE-2;j++)
  18.   {
  19.    if (fscanf(f,"%rd",&tab[i][j])==-1)
  20.     printf("erreur.\n" );
  21.   }
  22. }
  23. fclose(f);
  24. }
  25. int main(void)
  26. {
  27. matrice tab;
  28. int i;
  29. int j;
  30. for (i=0;i<TAILLE;i++)
  31.  for (j=0;j<TAILLE;j++)
  32.   tab[i][j]=0;
  33. mnt(tab);
  34. for (i=0;i<TAILLE;i++)
  35. {
  36.  for (j=0;j<TAILLE;j++)
  37.   printf("%d ",tab[i][j]);
  38.  printf("\n" );
  39. }
  40. return(0);
  41. }


Message édité par gobbaf le 15-10-2002 à 18:09:38
mood
Publicité
Posté le 15-10-2002 à 17:40:49  profilanswer
 

n°228314
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 15-10-2002 à 17:49:55  profilanswer
 

c'est quoi "rt" pour le mode de lecture. c'est quoi le "%rd" ?


---------------
du bon usage de rand [C] / [C++]
n°228315
gobbaf
Posté le 15-10-2002 à 17:53:45  profilanswer
 

y'avait des erreurs (elles sont écrites en rouge)
 

Code :
  1. void mnt(matrice tab)
  2. {
  3. FILE *f;
  4. int i;
  5. int j;
  6. if ((f=fopen("mnt.txt","rt" ))==NULL)
  7.  printf("Ouverture non correcte.\n" );
  8. else
  9. {
  10.  for (i=1;i<TAILLE-1;i++)
  11.   for (j=1;j<TAILLE-1;j++)
  12.   {
  13.    if (fscanf(f,"%d",&tab[i][j])==-1)
  14.     printf("erreur.\n" );
  15.   }
  16. }
  17. fclose(f);
  18. }

n°228318
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 15-10-2002 à 17:55:56  profilanswer
 

je connais toujours pas le "rt" et pourquoi par tu de 1 dans tes boucles?


---------------
du bon usage de rand [C] / [C++]
n°228319
gobbaf
Posté le 15-10-2002 à 17:56:16  profilanswer
 

Taz@PPC a écrit a écrit :

c'est quoi "rt" pour le mode de lecture. c'est quoi le "%rd" ?




rt pour le mode de lecture c'est 'r' pour lire et 't' pour dire qu'on a un fichier de texte composé de caractères ASCII
 
merci pour le "%rd" c'était bien "%d" pour afficher l'entier
(il a compilé quand même, c'est bizarre).
 :jap:

n°228321
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 15-10-2002 à 17:57:43  profilanswer
 

le "t" est pas standard du tout.


---------------
du bon usage de rand [C] / [C++]
n°228322
gobbaf
Posté le 15-10-2002 à 17:58:02  profilanswer
 

Taz@PPC a écrit a écrit :

je connais toujours pas le "rt" et pourquoi par tu de 1 dans tes boucles?




je pars de 1 et finis à TAILLE-1
parce que je dois mettre des 0 en bordure de matrice

n°228324
lorill
Posté le 15-10-2002 à 18:00:57  profilanswer
 

gobbaf a écrit a écrit :

 
merci pour le "%rd" c'était bien "%d" pour afficher l'entier
(il a compilé quand même, c'est bizarre).




en C, tout compile :D

n°228327
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 15-10-2002 à 18:04:56  profilanswer
 

oki. chez moi tout fonctionne parfaitement.


---------------
du bon usage de rand [C] / [C++]
n°228328
gobbaf
Posté le 15-10-2002 à 18:07:14  profilanswer
 

Taz@PPC a écrit a écrit :

le "t" est pas standard du tout.




 :??:  
j'ai mon cours sous les yeux :
 
"fonction fopen(const char *nom,const char *mode)
le paramètre mode est une chaîne de caractères qui indique le mode d'accès, et qu idoit être composée de deux caractères :
- le premier caractère indique si le fichier doit être ouvert en mode lecture (r pour read), en écriture (w pour write) ou en écriture en fin de fichier (a pour append).
- le deuxième carctère indique si le fichier doit être considéré comme un fichier de texte, composé de caractères ASCII (t pour text) ou comme un fichier binaire (b pour binary) quant aux opérations de lecture ou d'écriture qui y seront faites."
 
je fais du C ANSI (peut-être que ça explique, j'en sais rien du tout).

mood
Publicité
Posté le 15-10-2002 à 18:07:14  profilanswer
 

n°228330
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 15-10-2002 à 18:11:52  profilanswer
 

ben c'est pas du C ANSI désolai.
 

Citation :

K&R page 158, 7.4
 
Les modes autorisés sont la lecture ("r" ), l'ecriture ("w" ) et l'ajout ("a" ). Certains systèmes font la distinction entre les fichiers en mode texte ou binaire; pour ces derniers, il faut ajouter un "b" à la fin de la chaîne de caractères de mode.


 
"Certains systèmes" désigne par exemple Windows


---------------
du bon usage de rand [C] / [C++]
n°228331
gobbaf
Posté le 15-10-2002 à 18:13:50  profilanswer
 

Taz@PPC a écrit a écrit :

ben c'est pas du C ANSI désolai.
 

Citation :

K&R page 158, 7.4
 
Les modes autorisés sont la lecture ("r" ), l'ecriture ("w" ) et l'ajout ("a" ). Certains systèmes font la distinction entre les fichiers en mode texte ou binaire; pour ces derniers, il faut ajouter un "b" à la fin de la chaîne de caractères de mode.


 
"Certains systèmes" désigne par exemple Windows




 
merci faudra que le dise à mes profs
 
ça marche aussi chez moi  
 :)

n°228332
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 15-10-2002 à 18:16:13  profilanswer
 

j'ai vérifé aussi sur internet: le mode "t" existe mais n'est pas standard bien qu'il soit décrit comme tel dans certains manuels.


---------------
du bon usage de rand [C] / [C++]
n°228335
gobbaf
Posté le 15-10-2002 à 18:21:58  profilanswer
 

merci  
donc c'est pas standard
le t y est donc par défaut.
Si l'on travaille sur des fichiers binaires il faut bien mettre le b?

n°228337
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 15-10-2002 à 18:23:25  profilanswer
 

gobbaf a écrit a écrit :

merci  
donc c'est pas standard
le t y est donc par défaut.
Si l'on travaille sur des fichiers binaires il faut bien mettre le b?




 
oui c'est une maniere portable meme si certains systemes n'en ont pas besoin


---------------
du bon usage de rand [C] / [C++]
n°228341
gobbaf
Posté le 15-10-2002 à 18:28:26  profilanswer
 

merci
j'ai encore appris des choses aujourd'hui.

n°228342
Taz@PPC
saloperie de i=`expr $i + 1`;
Posté le 15-10-2002 à 18:30:44  profilanswer
 

:hello:


---------------
du bon usage de rand [C] / [C++]

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

  problème sur les fichiers (ouverture, fermeture, etc.) [résolu]

 

Sujets relatifs
Zipp de fichiers avant upload[PHP] Insérer des valeurs dans une zone de texte [Résolu]
Saut de ligne dans un LAYOUT -> Probleme !problemes sur les tableaux (résolu)
Probleme avec un portTransférer l'intégralité d'une base de donnée [résolu]
Gros problème de division et d'arrondi !problème de compilation...
Tomcat 4 - Problème de sur-persistance d'une page ![VB] Problème de typage
Plus de sujets relatifs à : problème sur les fichiers (ouverture, fermeture, etc.) [résolu]


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