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

  FORUM HardWare.fr
  Programmation
  C

  Hein? mon prog a enlevé une lettre de argv[] [NOVICE]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Hein? mon prog a enlevé une lettre de argv[] [NOVICE]

n°2074597
cill
Posté le 08-05-2011 à 17:57:37  profilanswer
 

Bonjour,
 
Alors mon problème se pose au niveau du &argv[] (à la ligne 11 après le comentaire).  
il me manque une lettre
 
 
bon, comme je ne suis pas facile à comprendre quand j'explique mon cas, je mets mon  
code et une image pour le résultat.
 
En le lisant, vous aurez compris que je veux utiliser argv et argc dans une autre fonction autre que main
ainsi qu'ouvrir un fichier de texte.
 

Code :
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. void test(char argv[1], int *argc)
  4. {
  5.     FILE* TEXTE = NULL;
  6.     int variable, fin = 0;
  7.     int tableau[1602]= {0};
  8.     int i = 0;
  9.     /*la ligne en dessous est un test de argv pour voir s'il me met  
  10.     TEXTE.TXT. Malheureusement, il me met: EXTE.TXT */
  11.     printf("\n%s", &argv[1]);
  12.     TEXTE = fopen(&argv[1],"r" );
  13.     if (TEXTE != NULL)
  14.     {
  15.         while(variable != EOF)
  16.         {
  17.             if(variable != EOF)
  18.             {
  19.                 variable = fgetc(TEXTE);
  20.                 tableau[fin]=variable;
  21.                 fin++;
  22.             }
  23.         }
  24.         for (i = 0; i<1602; i++)
  25.         printf("%c",tableau[i]);
  26.     }
  27. }
  28. int main(int argc, char* argv[])
  29. {
  30.     /* premier test de argv avec printf  il m'affiche: TEXTE.TXT */
  31.     printf("%s", argv[1]);
  32.     test(argv[1], &argc);
  33.     return 0;
  34. }


 
et voilà ce que j'obtiens:
 
http://imageshack.us/photo/my-images/189/sansresh.png
 
En espérant de vous avoir fait comprendre mon cas.


Message édité par cill le 08-05-2011 à 18:01:51
mood
Publicité
Posté le 08-05-2011 à 17:57:37  profilanswer
 

n°2074600
gilou
Modérateur
Modzilla
Posté le 08-05-2011 à 18:18:54  profilanswer
 

Citation :

void test(char argv[1]


Tu passes en premier argument un tableau de 1 caractère
puis
printf("\n%s", &argv[1]
tu demandes d'imprimer à partir du 2e caractère de ce tableau :whistle:
Un langage moins permissif que le C gueulerait que tu dépasses les bornes du tableau.
C ne dit rien, et commence au 2e caractere d'ou le E initial du second printf

 

Tu voulais sans doute faire
void test(char *arg)
et
printf("\n%s", &arg[0]);
ce qui s'écrit plus simplement comme
printf("\n%s", arg);

 

A+,


Message édité par gilou le 08-05-2011 à 18:19:20

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°2074602
cill
Posté le 08-05-2011 à 18:28:45  profilanswer
 

Effectivement, tu as raison.
 
Ainsi, si j'effectue ta démarche je ne ferais pas de débordement?
Et donc qu'elles sont les différence entre argv[] et arg[]?

n°2074603
cill
Posté le 08-05-2011 à 18:36:42  profilanswer
 

désolé pour le flood mais je retire ce que j'ai dit précédemment.
J'ai parfaitement compris mon erreur à présent merci.


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

  Hein? mon prog a enlevé une lettre de argv[] [NOVICE]

 

Sujets relatifs
Index d'annuaire : Vérifier que la première lettre existe dans un nomExécution d'un prog java sous Unix
[prog réseaux]serveur multithread et variable globalesMenu php / novice
MySQL/PhP Novice - Méthode de travailUn bind( ) dans un prog client en mode TCP
comment inclure/compiler OpenSSL dans mon progprog d'automates
Prog en .batQuel langage de prog/ quel IDE choisir?
Plus de sujets relatifs à : Hein? mon prog a enlevé une lettre de argv[] [NOVICE]


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