【发布时间】:2013-10-04 02:05:28
【问题描述】:
所以我试图在击中标志后从命令区域读取值。我不想使用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;
}
附: Gamble 只是一个类,它接受百分比,生成一个随机数,并根据使用随机生成器是否命中通过的百分比返回“成功”或“失败”。
【问题讨论】:
-
从文件中的一组存储行中获取下一个输入行对您有用吗?...使用 fopen,然后在每次设置标志时调用
fgets(,,);。或者,如果 argv[] 保证是数字,您可以使用 atoi(n) 将每个 argv[n] 值转换为 int -
我在编辑最后一条评论时没时间了:你可以做类似 int x[n];然后 x[i] = atoi(argv[i]),对于 0 到 n 个参数。
标签: c command-line command-line-arguments