我做在C程序的第一個參數,這是我的代碼:如何獲得一個程序調用
int main(int argc, char **argv) {
int n;
char aux[10];
sscanf(argv[1], "%[^-]", aux);
n = atoi(aux);
}
所以,如果我運行命令行程序:MY--23,我想得到數字「23」來隔離它像一個整數變量,但這是行不通的,我不知道爲什麼...
我做在C程序的第一個參數,這是我的代碼:如何獲得一個程序調用
int main(int argc, char **argv) {
int n;
char aux[10];
sscanf(argv[1], "%[^-]", aux);
n = atoi(aux);
}
所以,如果我運行命令行程序:MY--23,我想得到數字「23」來隔離它像一個整數變量,但這是行不通的,我不知道爲什麼...
您的sscanf
調用嘗試讀取(但不包括)字符串中第一個-
的任何內容。由於-
是(可能是)第一個字符,因此aux
最終爲空。
你可以這樣做:sscanf(argv[1], "%*[-]%d", &n);
。這將跳過任何前導-
字符,因此參數23
,-23
和--23
將全部被同等對待。如果你想--23
被解釋爲-23
(只有一個前導破折號標誌),那麼你可以使用sscanf(argv[1], "-%d", &n);
(在這種情況下,命令行上只有23
,轉換將徹底失敗)。
檢查你的sscanf格式,我假設aux是一個整數?
from http://www.cplusplus.com/reference/clibrary/cstdio/sscanf/ sscanf(str,「%d」,& n);
這是一個字符數組,然後我把它與atoi轉換爲一個整數 – Puyover
是的,第一種形式工作正常,但我看到更簡單的第二種形式(sscanf(argv [1],「 - %d」 ,&n);)並且工作得很好,謝謝。 – Puyover