[英]Why is argv[1][0] not '?' for 'a.out ?' executed in a bash shell
為什么? 下面不顯示幫助? 換句話說,為什么argv[1][0]
不是 '?' 什么時候“a.out?” 被輸入?
#include<stdio.h>
#include <stdlib.h>
int main(int argc, char **argv){
**printf("<%c>\n", argv[1][0]);**
if(argc == 1 || argv[1][0] == '?' || argv[1][0] == 'h' || argv[1][0] == 'H'){
printf("Usage: %s <THC %-age> <GMs> <$s> [<TCH %-age> <GMs> <$s> [<TCH %-age> <GMs> <$s> ...\n", argv[0]);
return(1);
}
if(argc%3 != 1){
printf("must input 3n vars\n");
return(2);
}
for(int i = 0; i < argc/3; i++){
printf("%2.2f $/grOfThc\n", atof(argv[i * 3 + 3]) / (atof(argv[i * 3 + 2]) * atof(argv[i * 3 + 1])));
}
return(0);
}
./a.out h
<h>
Usage: ./a.out <THC 0x0p+0ge> <GMs> <$s> [<TCH 0x0p+0ge> <GMs> <$s> [<TCH 0x0p+0ge> <GMs> <$s> ...
./a.out ?
<1>**
must input 3n vars
./a.out ?est
<?>
Usage: ./a.out <THC 0x0p+0ge> <GMs> <$s> [<TCH 0x0p+0ge> <GMs> <$s> [<TCH 0x0p+0ge> <GMs> <$s> ...
您的 shell 替換?
包含當前目錄中的一個字符長的文件名列表。
$ ls -1
a
b
c
def
$ ls -1 ?
a
b
c
$ echo ?
a b c
$ echo ?ef
def
您需要使用某種形式的 escaping 或引用。
$ echo \?
?
$ echo '?'
?
?
如果當前目錄中有名稱由單個字符組成的文件,則可以擴展作為命令行參數。
另請注意, %-age
-age 應寫成%%-age
或percentage
,以避免編譯器警告和運行時的未定義行為。
%-a
需要一個double
參數(未提供)並將其轉換為十六進制浮點格式,左對齊其自身寬度,如 output 所示: 0x0p+0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.