![](/img/trans.png)
[英]C program help to open a file in Unix/Linux using getopt and command line argument
[英]getopt not working correctly when run from unix command line
我編寫了一個C程序(從Google復制並粘貼,並進行了簡化),以使用getopt打印從Unix命令行傳入的參數值。
從Unix命令行:
./myprog -a 0 -b 1 -c 2
我的C代碼是:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc, char *argv[])
{
int i;
while ((i = getopt(argc, argv, "abc")) != -1) {
switch (i) {
case 'a':
printf("A = %s\n", optarg);
break;
case 'b':
printf("B = %s\n", optarg);
break;
case 'c':
printf("C = %s\n", optarg);
break;
default:
break;
}
}
return 0;
}
我想編程打印出每個傳遞的值,例如
A = 0
B = 1
C = 2
但是,它根本不打印任何內容。
在帶參數的任何選項之后,您都會忘記“:”。 如果您要換一行
while ((i = getopt(argc, argv, "a:b:c:")) != -1) {
您將獲得工作變體。
正確閱讀man 3 getopt
,它說到關於getopt
第三個論點
…optstring是包含合法選項字符的字符串。 如果此類字符后接冒號,則該選項需要一個參數,因此getopt()將指針指向位於同一argv-element中的后續文本,或位於optarg中的后續argv-element的文本。 兩個冒號表示一個選項帶有一個可選的arg; 如果當前argv元素中有文本(即,與選項名稱本身相同的詞,例如“ -oarg”),則將它以optarg返回,否則optarg設置為零。 ...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.