- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
考虑以下代码:
int number;
while((w = getopt(argc, argv, "n:s:")) != -1) {
switch (w){
case 'n': {
opfile->filename = optarg;
}break;
case 's': {
number = atoi(optarg);
}break;
}
}
现在,当我将两个选项或选项 s
都留空时,例如,我在没有命令行参数的情况下启动我的程序,那么 number
变量仍然会随机生成一个值(value)。
我在这里错过了什么? s
中的一些 if 语句?具体来说,我想介绍用户未在命令行参数中为 s
分配特定值/选项的情况。
最佳答案
当没有 's' 选项传递给程序时,根本不执行 case 's'
分支,并且没有其他任何东西将 number
设置为一个值,这意味着后续读取会触发未定义的行为。 (这可能远比在您稍后读取时只给您一个随机值更糟糕。这是一个必须修复的错误。)
但是因为没有其他东西触及number
,所以改变就足够了
int number;
到
int number = 0;
或者您希望默认设置的任何其他内容。
(顺便说一句,你真的应该使用 strtol
而不是 atoi
,因为 atoi
会忽略语法错误。)
关于没有参数的 c optarg atoi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38800145/
我正在从用户那里获取命令行参数。 然后我为命令做 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 我目前的期望是,如果我有以下
我是一名优秀的程序员,十分优秀!