Pregunta

Como escribí una aplicación con la main(int argc, char * argv[]) función

cuando inicio la aplicación, quiero enviar algunos parámetros como (Asumir el nombre de la aplicación es ffdisk)

>ffdisk -f 111123123131321312312123 1

Usted ve el tercer parámetro tal vez un parámetro Int64 en mi intención original ...
Sin embargo, en función principal, argv [2] es puntero de cadena, así que ¿cómo puede convertir esta cadena en una variable Int64?

Gracias ...
Siempre estoy atascado en problemas desordenados ....

¿Fue útil?

Solución

Puede utilizar _atoi64, funciones _strtoi64 en stdlib.h

Otros consejos

No tenemos múltiples formas, utilizar alguna biblioteca argc / argv analizar, de forma manual o utilizar sscanf o atol funciones de biblioteca.

#include <stdlib.h>

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

A medida que estés apuntan a Windows y Linux, es posible que desee mantenerse dentro de la funcionalidad presente en ambos sistemas. Eso significa liso C89 estándar.

Pero llanura C89 Norma no requiere implementaciones de proporcionar un tipo entero de 64 bits. Por lo tanto, le pegan todos modos.

Asumiendo que tiene un tipo (dependiente de la implementación) lo suficientemente grande para sus necesidades, puede crear el número bits dígito a dígito ...

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 */

Para Linux, la biblioteca C de GNU tiene getopt . Para Windows, puede echar un vistazo a XGetopt

O bien, puede echar un vistazo a argtable (pero nunca he tenido la oportunidad de usarlo)

También en C ++:

  

Boost.Program_option s permite   los desarrolladores de programas para obtener el programa de   opciones, que es (nombre, valor) pares   desde el usuario, a través convencional   métodos tales como la línea de comandos y   archivo de configuración.

o

  

El gflags paquete contiene una   biblioteca que implementa comandos   procesamiento de banderas. Como tal, es una   reemplazo para getopt (). Tiene   aumento de la flexibilidad, incluyendo   soporte integrado para C ++ tipos como   cadena, y la capacidad de definir   banderas en el archivo de origen en el que   se utilizan.

Sólo tiene que elegir uno.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top