使用标志从命令行读取值

时间:2013-09-27 17:11:26

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

所以我试图在标志被击中后从命令区读取值。我不想使用scanf,因为它不应该暂停。它应该采取如下论点:     run -p 60 10 其中60是百分比值,10是多个过程。如何在不使用暂停用户输入的scanf的情况下将其读入变量?我是否需要使用argv[2]argv[3]为其分配值?我想要整数值,而不是字符串。

到目前为止,这是我的代码:

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <ctype.h>
#include <unistd.h>


bool Gamble(int percent);




int main(int argc, char *argv[])
{

int c;
int pflag = 0;
int vflag = 0;
int percent;
int processes;

while ((c = getopt (argc, argv, "-p-v: ")) != -1)
{
     switch (c)
       {
       case 'p':
         pflag = 1;
         percent = argv[2];
         //scanf("%d", &percent);
         break;
       case 'v':
         vflag = 1;
         break;
       default:
         processes = argv[3];
       }

}

printf("%d\n", percent);
printf("%d\n", processes);




Gamble(percent);


return 0;

}

P.S。赌博只是一个接受百分比的类,生成一个随机数,并根据是否使用随机生成器命中传递的百分比返回“成功”或“失败”。

2 个答案:

答案 0 :(得分:2)

您可以使用sscanf从字符串中读取数字值。

答案 1 :(得分:1)

getopt将选项值放在optarg中。您不想直接从argv []中读取它们。请参阅如何使用getopt的示例

http://www.gnu.org/software/libc/manual/html_node/Example-of-Getopt.html