假设我有这段代码:
size_t n; // my parameter
while((c = getopt(argc, argv, "n:")) != -1) {
switch(c) {
case 'n':
n = optarg; // <=== HERE
break;
default:
abort ();
}
}
我正在使用 getopt
GNU C 函数解析命令行参数。如果 n
数据类型是 size_t
(无符号整数)...
我应该如何转换这个值?
我应该使用 strtol
转换它吗?
最佳答案
调用 strtol
不是强制转换,但它可能是您想要执行的操作。 (strtoul
更有可能。)
两者都将接受负数(即使 strtoul
生成一个 unsigned long
)所以您可能希望在调用转换函数之前进行一些错误检查。
有关详细信息,请阅读 man strtoul
联机帮助页。
您还可以考虑将 n
设为 unsigned long
而不是 size_t
。
关于从 getopt 转换参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22433213/