Domanda

Come ho scritto un app con la funzione main(int argc, char * argv[])

Quando inizio l'applicazione, voglio inviare alcuni parametri come (Assumere il nome di applicazione è ffdisk)

>ffdisk -f 111123123131321312312123 1

Si vede il terzo param forse un param Int64 nella mia intenzione originale ...
Ma nella funzione principale, argv [2] è puntatore stringa, così come si può convertire questa stringa in una variabile Int64?

Grazie ...
Sono sempre bloccato a problemi disordinato ....

È stato utile?

Soluzione

È possibile utilizzare _atoi64, funzioni _strtoi64 in stdlib.h

Altri suggerimenti

Ci sono diversi modi, utilizzare alcuni / biblioteca argv parsing argc, o manualmente utilizzare sscanf o Atol funzioni di libreria.

#include <stdlib.h>

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

Come si sta rivolte a Windows e Linux, si consiglia di rimanere ben al della funzionalità presente su entrambi i sistemi. Ciò significa pianura C89 standard.

Ma pianura C89 standard non richiede implementazioni di fornire un tipo integer a 64 bit. Così, sei bloccato in ogni caso.

Supponendo di avere un tipo (a carico di attuazione) abbastanza grande per le vostre esigenze, è possibile creare il numero po ' cifra per cifra ...

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

Per Linux, la libreria C GNU ha getopt . Per Windows è possibile dare un'occhiata a XGetopt

Oppure si può dare un'occhiata a argtable (ma non ho mai avuto l'opportunità di usarlo)

Anche in C ++:

  

Boost.Program_option s permette   sviluppatori di programmi per ottenere il programma   opzioni, vale a dire (nome, valore) coppie   da parte dell'utente, tramite convenzionali   metodi come linea di comando e   file di configurazione.

o

  

Il href="http://code.google.com/p/google-gflags/" rel="nofollow noreferrer"> gflags pacchetto contiene un   libreria che implementa a riga di comando   elaborazione bandiere. Come tale è un   sostituzione getopt (). Esso ha   maggiore flessibilità, compresi   supporto integrato per C ++ tipi come   stringa, e la possibilità di definire   bandiere nel file di origine in cui   sono abituati.

Basta scegliere uno.

scroll top