2011-11-23 80 views
1

我做在C程序的第一個參數,這是我的代碼:如何獲得一個程序調用

int main(int argc, char **argv) { 
    int n; 
    char aux[10]; 
    sscanf(argv[1], "%[^-]", aux); 
    n = atoi(aux); 
} 

所以,如果我運行命令行程序:MY--23,我想得到數字「23」來隔離它像一個整數變量,但這是行不通的,我不知道爲什麼...

回答

4

您的sscanf調用嘗試讀取(但不包括)字符串中第一個-的任何內容。由於-是(可能是)第一個字符,因此aux最終爲空。

你可以這樣做:sscanf(argv[1], "%*[-]%d", &n);。這將跳過任何前導-字符,因此參數23,-23--23將全部被同等對待。如果你想--23被解釋爲-23(只有一個前導破折號標誌),那麼你可以使用sscanf(argv[1], "-%d", &n);(在這種情況下,命令行上只有23,轉換將徹底失敗)。

+0

是的,第一種形式工作正常,但我看到更簡單的第二種形式(sscanf(argv [1],「 - %d」 ,&n);)並且工作得很好,謝謝。 – Puyover

相關問題