0 votes

comment imprimer une chaîne de caractères verticalement en c ?

Ok, la sortie est censée ressembler à ça :

./a 3 4 8 2  
3  
4  
8  
2

C'est ce que j'ai fait jusqu'à présent, mais je suis perdu et je n'arrive à imprimer que le premier entier (il faut utiliser GetInt, qui récupère l'entier spécifié dans la chaîne) :

int main (int argc, char*argv []){  
   int v;    
   int i;  
   i = 1;  
   v = GetInt(argc, argv, i + 1);  

   if(argc >= 1){  
      printf("%d\n", GetInt(argc, argv, i));  
   }  
   return 0;  
}

3voto

Blorgbeard Points 38991

On dirait que vous devez utiliser une boucle for pour obtenir chaque valeur à tour de rôle.

2voto

Nick Presta Points 13298

Sans voir votre implémentation de GetInt, quelque chose comme ceci (suppose C90) :

#include <stdio.h>

int GetInt( int argc, char* argv[], int i ) {
    /* 
     * you may want to use sscanf, strtol or other functions,
     * but you haven't specified
     */
    return atoi( argv[i] );
}

int main ( int argc, char* argv[] ) {
    int i;
    for ( i = 1; i < argc; ++i ) {
        printf( "%d\n", GetInt( argc, argv, i ) );
    }
    return 0;
}

Les retours :

$ ./a.out 3 4 8 2
3
4
8
2

Vérification des erreurs omise et autres. C'est un exercice pour vous de trouver comment traiter les arguments non-décimaux.

1voto

Chris Lutz Points 34157

D'ailleurs, pourquoi ont à utiliser GetInt() ? C'est complètement superflu et ne fait pas partie d'une bibliothèque standard, et à moins que vous ne l'ayez écrit vous-même (ou en classe), je ne peux pas imaginer l'utiliser un jour. Voici ce que je ferais :

#include <stdio.h>

int main(int argc, char *argv[])
{
    int i;
    for(i = 1; i < argc; i++)
      {
        printf("%s\n", argv[i]);
      }
    return 0;
}

Je sais que ça n'utilise pas GetInt() mais c'est plus court, et vous avez probablement ne devrait pas utiliser GetInt() parce que c'est plutôt inutile. De plus, il y a déjà un atoi() et, si vous ne voulez pas l'utiliser parce qu'elle est dépassée, une fonction strtol() que vous pouvez refondre en une fonction int si vous devez le faire.

Je ne vous critique pas, je me demande simplement pourquoi on vous demande d'utiliser cette fonction superflue et non standard.

0voto

Donotalo Points 5962

Utilisez printf() dans une boucle. argc est le nombre d'arguments séparés par des espaces dans argv[], dans l'exemple ci-dessus, argc = 5.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X