Frage

Als ich eine App mit der Funktion schrieb main(int argc, char * argv[])

Wenn ich die Anwendung starte, möchte ich einige Parameter senden (Angenommen, der App -Name ist ffdisk)

>ffdisk -f 111123123131321312312123 1

Sie sehen den dritten Param, vielleicht einen INT64 -Param in meiner ursprünglichen Absicht ...
Aber in der Funktion Main ist Argv [2] String -Zeiger. Wie kann diese Zeichenfolge also in eine INT64 -Variable konvertiert werden?

Danke ...
Ich stecke immer bei chaotischen Problemen fest ....

War es hilfreich?

Lösung

Sie können _atoi64, _strtoi64 -Funktionen in stdlib.h verwenden

Andere Tipps

Es gibt mehrere Möglichkeiten, verwenden Sie eine Argc/Argv -Parsing -Bibliothek oder verwenden Sie manuell SSCANF- oder ATOL -Bibliotheksfunktionen.

#include <stdlib.h>

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

Wenn Sie auf Windows und Linux abzielen, möchten Sie möglicherweise in den auf beiden Systemen vorhandenen Funktionen gut bleiben. Das bedeutet einfacher Standard C89.

Ein einfacher Standard-C89 erfordert jedoch keine Implementierungen, um einen 64-Bit-Ganzzahltyp bereitzustellen. Also steckst du trotzdem fest.

Angenommen, Sie haben einen Typ (implementierungsabhängig), der groß genug für Ihre Anforderungen ist, können Sie die Nummer erstellen bisschen Ziffer nach Ziffer ...

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

Für Linux hat die GNU C -Bibliothek Getopt. Für Windows können Sie einen Blick darauf werfen Xgetopt

Oder Sie können sich ansehen Argumierbar (Aber ich hatte nie die Gelegenheit, es zu benutzen)

Auch in C ++:

Boost.Program_OptionS ermöglicht Programmentwicklern, über herkömmliche Methoden wie die Befehlszeile und die Konfigurationsdatei Programmoptionen, dh (Name, Wert-) Paare des Benutzers, zu erhalten.

oder

Das GFLAGs Das Paket enthält eine Bibliothek, die die Verarbeitung von Befehlslinienflags implementiert. Als solches ist es ein Ersatz für GetOpt (). Es hat eine erhöhte Flexibilität, einschließlich integrierter Unterstützung für C ++-Typen wie String und die Möglichkeit, Flags in der Quelldatei zu definieren, in der sie verwendet werden.

Wählen Sie einfach einen aus.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top