Question

Comme je l'ai écrit une application avec la fonction main(int argc, char * argv[])

Quand je démarre l'application, je veux envoyer des paramètres comme (En supposant que le nom de l'application est ffdisk)

>ffdisk -f 111123123131321312312123 1

Vous voyez le troisième param peut-être une int64 dans param mon intention originale ...
Mais dans la fonction principale, argv [2] est le pointeur de chaîne, alors comment peut convertir cette chaîne en une variable int64?

Thanx ...
Je suis toujours coincé à des problèmes en désordre ....

Était-ce utile?

La solution

Vous pouvez utiliser _atoi64, les fonctions de _strtoi64 dans stdlib.h

Autres conseils

Il sont plusieurs façons, utilisez un argc / argv bibliothèque analyse syntaxique, ou utiliser manuellement les fonctions de bibliothèque sscanf ou Atol.

#include <stdlib.h>

int main(int argc, char** argv) {
     second_parm_as_long_long = atoll(argv[2]);
     return 0;
}

Comme vous Windows et Linux ciblage, vous pouvez rester bien dans les fonctionnalités présentes sur les deux systèmes. Cela signifie standard C89 simple.

Mais simple standard C89 ne nécessite pas mises en œuvre pour fournir un type entier 64 bits. Donc, vous êtes coincé de toute façon.

En supposant que vous avez un type (en fonction de la mise en œuvre) assez grand pour vos besoins, vous pouvez créer le numéro bit chiffre par chiffre ...

value = 0; /* value is of the large enough type */
char *p = argv[2];
while (*p) {
    value *= 10;
    value += *p - '0';
    p++;
}
/* if argv[2] was "111123123131321312312123"
 * and the type is large enough,
 * value now has 111123123131321312312123 */

Pour Linux, la bibliothèque GNU C a getopt . Pour Windows, vous pouvez consulter XGetopt

Vous pouvez également consulter argtable (mais je ne ai jamais eu l'occasion de l'utiliser)

De plus en C ++:

  

Boost.Program_option s permet   Les développeurs de programme pour obtenir le programme   options, à savoir des paires (nom, valeur)   de l'utilisateur, via conventionnel   méthodes telles que la ligne de commande et   fichier de configuration.

ou

  

Le paquet gflags contient un   bibliothèque qui implémente commandline   le traitement des drapeaux. En tant que tel il est un   remplacement pour getopt (). Il a   une flexibilité accrue, y compris   un support intégré pour les types C ++ comme   chaîne, et la possibilité de définir   drapeaux dans le fichier source dans lequel   ils sont utilisés.

Il suffit de choisir un.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top