2015-03-24 1 views
0

J'essaye d'imprimer un entier qui a été passé par la ligne de commande mais la console imprime de longues valeurs aléatoires.C Je ne peux pas imprimer un entier, qui a été passé comme argument dans la ligne de commande

Je mets cela en RUN "C: \ Users \ pc \ Documents \ Visual Studio 2013 \ Projects \ Lab3 \ Debug \ Lab3.exe randomString 4"

#include <stdlib.h> 
#include <stdio.h> 




int main(int argc, char *argv[]){ 

    printf("%s\n", argv[0]); // Working 
    printf("%s\n", (argv[1])); // working 
    printf("%d\n", (int)(argv[2])); // NOT Working 
    printf("%d\n", argc); // Working 
    system("pause"); 
    return 0; 
} 

Répondre

4

Vous ne pouvez pas juste "cast" un pointeur char * vers un int et s'attend à ce qu'il soit converti par magie. C'est juste l'impression de l'adresse du premier élément du tableau. Vous devez le convertir en un int avec une fonction d'exécution tels que atoi(argv[2]) Voir fonction détails here

+0

Merci beaucoup, mec! –

+0

Vous pouvez également utiliser: * ((int *) argv [2]). Pas sûr – midor

2

La variable argv[2] est un pointeur de chaîne (char* pour être précis). Donc, le couler à int vous donnera juste la valeur numérique de ce pointeur (ou une partie de celui-ci, en fonction de la taille des adresses sur votre système). Et c'est exactement votre "long nombre aléatoire" que vous voyez. Afin de convertir la chaîne en nombre, vous pouvez utiliser des fonctions comme atoi.