- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有下一个代码。
int opt;
while ((opt = getopt(_argc, _argv, "n:pcs:")) != -1)
{
switch (opt)
{
case 'n':
*_numberOfMessages = atoi(optarg);
break;
case 'p':
if(*_consumereFlag)
{
return ERROR;
}
*_producerFlag = ON;
break;
case 'c':
if(*_producerFlag)
{
return ERROR;
}
*_consumereFlag = ON;
break;
case 's':
*_delayTimemSec = atoi(optarg);
break;
default:
return ERROR;
}
}
return 0;
代码从用户那里获取参数,并将它们插入到调用 optarg 的字符串中。如果我在 -n 或 -s 之后插入 arg,一切正常。问题是我只想写 -n 之后什么都不写。如果 -n 或 -s 之后没有参数,那么 optarg 是什么?
最佳答案
语法 "n:"
表示 n 应该 后跟一个参数。如果不是,那就是错误。默认情况下,任何错误都会返回字符 "?"
。
如果您有 GNU getopt(),那么您可以改用双冒号:"n::"
。双冒号表示参数是可选的。这样 getopt
无论如何都会返回 n
,而 optarg
将是 NULL
或一个有效的指针。但是,至少在我的测试中,getopt
在这种情况下不需要在选项后有空格。即 "n:"
允许 "-n 100"
和 "-n100"
,而 "n::"
只允许后者。
关于c - 如果没有插入,optarg 的值是多少,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48497511/
我正在从用户那里获取命令行参数。 然后我为命令做 switch case,例如: case 'f': *file_name = optarg; break;
我希望能够为 -a arg 获取 2 个值,例如:-a min max 我有以下代码: while((opt = getopt(argc,argv,"a:c:k:rv")) != -1) {
我正在尝试在 optarg 上使用 atoi,但它也可能是任何东西。我一直在试图弄清楚为什么我的 getopt_long 不起作用。当我输入我的 switch 语句时,optarg 设置为 null
Optarg 始终为空。应用程序崩溃。 static const char* const short_options = "a:h:p"; static const struct option lon
尝试使以下 C 代码工作,但每次我给它一个文件以返回它的大小时,都会说文件名为空。 我尝试过的示例命令行: 问题7 -h -t -f 问题8.c 无论如何,它返回 optarg 为 null。我不确定
我有一个程序需要使用以下方式调用: program parameter1 parameter2 -x1 -y 但我觉得如果我这样做应该会起作用: program -x1 -y parameter1 p
我希望能够在我的脚本中接受强制和可选标志。这是我目前所拥有的。 #!bin/bash while getopts ":a:b:cdef" opt; do case $opt in
我想在争论后得到更多的 optargs,但我不知道该怎么做。我想像 这样调用我的程序 ./test -a first second -b third 我现在只能在参数 -a 后获得一个值。当我尝试将两
我是C编程的新手,我对C++有一些经验,但对C一无所知。我有一个关于getopt optarg参数的问题,它是一个字符串。我想检查 -x 标志的输入参数是否等于“dog”。我当前的代码如下所示: in
我有下一个代码。 int opt; while ((opt = getopt(_argc, _argv, "n:pcs:")) != -1) { switch (opt) {
您好,我正在研究一本书中的一个程序。该程序几乎按预期运行,除了一个错误。每次我尝试使用“-l”大小写时,我都会遇到段错误。有什么想法吗? #include #include int main(in
考虑以下代码: int number; while((w = getopt(argc, argv, "n:s:")) != -1) { switch (w){
这个问题特别涉及 gcc 中可选参数的 getopt。当一个选项被定义为有一个可选参数并且没有给出参数时,optarg 被设置为一个空指针或一个指向空字符串的指针。手册似乎没有处理这种情况。行为是否得
我正在使用 getopt 来解析传递给我的 c 程序的参数。我想在解析时检查 optarg 是否全是数字,但我不知道如何获取 optarg 中值的长度: int opt; unsigned short
您好,我正在编写一个简单的客户端-服务器程序。在这个程序中,我必须使用 getopt() 来获取端口号和 IP 地址,如下所示: 服务器 -i 127.0.0.1 -p 10001 我不知道如何从 o
我是 getopt(3) 的新手,查看了一些示例并遇到了 this one . 这些行 case 'c': cvalue = optarg; break; 我觉得很奇怪,因为 op
我需要这样调用我的程序: ./program hello -r foo bar 我从 argv[1] 中打招呼,但我在使用值 bar 时遇到问题,我是否也应该将“r:”更改为其他内容? while((
有人可以检查此代码片段并告诉我为什么当我使用 -p abcdef 调用此脚本时 $OPTARG 从未具有传入的参数值吗? # Process command-line options passed a
通过实验,我似乎可以捕获 optarg 的连续值。迭代时 int getopt(int argc, char * const argv[], const char *optstring)并稍后引用它们
我正在尝试使用 GNU getopt 函数解析我的 C 程序中的一些命令行参数。假设我调用以下电话: ./my_program -E 16 -t path/to/file 我目前的期望是,如果我有以下
我是一名优秀的程序员,十分优秀!