如何将字符串指针转换为64位(_int64)变量?

时间:2009-12-09 10:02:57

标签: c parsing command-line command-line-arguments

当我使用函数main(int argc, char * argv[])

编写应用程序时

当我启动应用程序时,我想发送一些参数,如 (假设应用名称为ffdisk

>ffdisk -f 111123123131321312312123 1

你看到第三个参数可能是我初衷的int64参数...
但是在函数main中,argv [2]是字符串指针,那么如何将这个字符串转换成int64变量?

...感谢名单
我总是陷入凌乱的问题......

5 个答案:

答案 0 :(得分:2)

有多种方法,使用一些argc / argv解析库,或手动使用sscanf或atol库函数。

答案 1 :(得分:2)

您可以在stdlib.h中使用_atoi64,_strtoi64函数

答案 2 :(得分:2)

#include <stdlib.h>

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

答案 3 :(得分:1)

当您的目标是Windows和Linux时,您可能希望保持在两个系统上的功能范围内。这意味着简单的标准C89。

但是普通的标准C89不要求实现提供64位整数类型。所以,无论如何你都被困住了。

假设您有一个足以满足您需求的类型(依赖于实现),您可以逐位创建数字 ...

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

答案 4 :(得分:0)

对于Linux,GNU C库有getopt。对于Windows,您可以查看XGetopt

或者您可以查看argtable(但我从未有机会使用它)

同样在C ++中:

  

Boost.Program_option允许   程序开发人员获取程序   选项,即(名称,值)对   来自用户,通过传统   命令行和命令行等方法   配置文件。

  

gflags包中包含一个   实现命令行的库   标志处理。因此它是一个   替换getopt()。它有   增加灵活性,包括   内置支持C ++类型   字符串,以及定义的能力   源文件中的标志   他们被使用了。

选择一个。