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

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

Marsh Posté le 08-05-2011 à 17:57:37    

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
Reply

Marsh Posté le 08-05-2011 à 17:57:37   

Reply

Marsh Posté le 08-05-2011 à 18:18:54    

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é!  --
Reply

Marsh Posté le 08-05-2011 à 18:28:45    

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[]?

Reply

Marsh Posté le 08-05-2011 à 18:36:42    

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.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed