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

  FORUM HardWare.fr
  Programmation
  C

  utiliser les valeurs d'un fichier texte [ résolu ].

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

utiliser les valeurs d'un fichier texte [ résolu ].

n°2316334
e- t
Posté le 03-06-2018 à 16:15:34  profilanswer
 

Salut à toutes et tous .  
je suis débutant en programmation et je vous sollicite pour un problème sur lequel je butte depuis plusieurs jours ... désolé , de demander une chose qui est certainement évidente pour vous ..
voilà le topo: en utilisant la fonction "fgets" je récupère dans un  tab1 deux nombres (1 et 3) stockés dans un fichier texte. Je demande l'affichage dans la fonction, tout est bon.  Ensuite je voudrais utiliser ces nombres pour supprimer d'éventuelles occurences avec un tableau tab2 ,  mais je ne parviens pas à utiliser ces valeurs  ni même à les afficher en dehors de "fgets" ..  est-ce que quelqu'un veut bien m'éclairer ?  Merci d'avance.
 
voici le code :

Code :
  1. int main()
  2. {
  3.       /*  ouverture du fichier contenant les entiers  1 et 3 .*/
  4. #define TAILLE_MAX 100
  5.     int tab1[TAILLE_MAX];
  6.     FILE* fichier = NULL;
  7.     fichier = fopen("fichier.txt", "r" );
  8.     if( fichier == NULL)
  9.           printf("\n  ouille y a un bleme avec le fichier \n" );
  10.       { fgets( tab1,TAILLE_MAX,fichier);
  11.         printf("  fichier : %s \n\n ", tab1);    /* les bonnes valeurs sont affichees */
  12.         fclose(fichier);
  13.       }
  14.     printf(" 1er indice : %d \n\n ",tab1[0]);    [][/]/* ici il affiche 3350577 c'est une adresse,non ? */
  15.     int i;
  16.     for( i=0;i<2;i++);
  17.     printf(" affichage tab1: %d \n",tab1[i]); /* ici il affiche 7667712 encore une adresse .. */
  18.    int tab2[]={1,2,3,4,5};
  19.         /*   recherche et suppression occurrence   */
  20.    int n = 5;    int trouve = 0;   int occurrence = -1;
  21.    int x;   x=  tab1[0];
  22.     printf(" \n valeur de x : %d  \n" ,x);     /* ici il affiche encore 3350577, c'est bon !! */
  23.     while((i<n)&&(trouve==0))
  24.         {  if(tab2[i]==x)
  25.               {trouve = 1;
  26.                occurrence = i;
  27.               }
  28.           else
  29.             i++;
  30.         }
  31.          if ( occurrence == -1)
  32.              printf("  la valeur de x n'existe pas. \n" );
  33.          else
  34.           {    for(i = occurrence; i<n-1; i++)
  35.              {  tab2[i]=tab2[i+1];
  36.                 n--;
  37.              }
  38.               printf(" tableau de 4 No : " );
  39.               printf(" %d  \n  " ,tab2[i]);
  40.           }
  41.     return 0;
  42. }


Message édité par e- t le 05-06-2018 à 10:15:17
mood
Publicité
Posté le 03-06-2018 à 16:15:34  profilanswer
 

n°2316335
Totoche17
Posté le 03-06-2018 à 17:34:22  profilanswer
 

Il faut passer un char* à fgets et pas un int*

n°2316337
rat de com​bat
attention rongeur méchant!
Posté le 03-06-2018 à 18:02:17  profilanswer
 

Totoche17 a écrit :

Il faut passer un char* à fgets et pas un int*

+1
Le compilateur te le dirait si tu avais activé les warnings. Obligatoire pour les débutants!
 
Et entre parenthèses, si fichier==NULL ça ne suffit pas d'imprimer un message, tu ne peux pas continuer après, il faut quitter le programme (ou réessayer d'ouvrir le fichier).

n°2316339
e- t
Posté le 03-06-2018 à 18:59:44  profilanswer
 

merci d'avoir répondu si vite.
 j'ai mis un "int" à fgets  car je voulais extraire des chiffres ...mais j'ai faux . bon ..  j'ai vu les warnings ,effectivement avec "char" il n'y en a pas. en revanche pour tab1[0]); il affiche: 49 . pour tab1[1];  il affiche 32.   et pour tab1[i] il affiche 51....  alors que les valeurs dans le fichier sont 1 et 3 ... alors là,...  déjà que je comprenais pas tout ..!

n°2316340
rat de com​bat
attention rongeur méchant!
Posté le 03-06-2018 à 19:11:49  profilanswer
 

Il faut d'abord lire la chaîne de caractéres avec fgets, ensuite séparer les nombres (montre donc le contenu de ton fichier texte) et convertir les lettres en nombres. Ce que tu vois actuellement ce sont des codes ASCII (une chaîne de caractéres est une suite de codes ASCII terminé avec 0). Tu peux aussi regarder du côté fscanf.

n°2316342
e- t
Posté le 03-06-2018 à 19:40:40  profilanswer
 

ok d'accord. Je vais me pencher là-dessus.  Mais vu que mon fichier contiendra uniquement des nombres, il serait peut-être plus simple que j'opte pour un fichier binaire ?  j'avais un peu regardé ça , mais  ça m'avait fait peur !!!!!! on est nul parfois quand on débute !!  Mais bon , quand il faut ,il faut . merci " rat de combat ".

n°2316425
minitoy
Posté le 05-06-2018 à 02:26:09  profilanswer
 

Humm revois les bases sur les int et les char (comme dis plus haut, man ASCII). Quand tu récup un char*, et que tu veux récupérer chaque valeurs, soit tu split, sur les espaces, ton fichier dans un char** et tu lances un atoi sur chaque string de ton tableau, soit tu atoi au fur et à mesure en faisant bien attention d'envoyer la bonne position dans ta string à cette fonction.

 

La première proposition est plus simple à mettre en œuvre et plus formateur de mon point de vue.

n°2316431
e- t
Posté le 05-06-2018 à 09:57:26  profilanswer
 

Merci beaucoup de votre aide et de votre indulgence face à mes erreurs grossière . A décharge pour moi ,je suis ..très débutant et j'ai peut-être voulu aller plus vite que la zizique !!  j'ai réglé le problème.


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

  utiliser les valeurs d'un fichier texte [ résolu ].

 

Sujets relatifs
[VBS] Problème déplacement fichierRechercher un mot clé et renvoyer à une somme de valeurs
extraire fichier .gpx d'un site web(Projet) Rappel de valeur d'un fichier variable
Renomez un fichier xlsx avec le numero de la semaine[Perl] Module JSON / Lire un fichier
sauvegarder fichier XMLImportation de fonctions depuis un fichier
Carousel avec du texte seulementCreer un fichier Sass avec SublimText
Plus de sujets relatifs à : utiliser les valeurs d'un fichier texte [ résolu ].


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