2015-10-16 83 views
0

我需要得到argv [1]和argv [2]不同的類型。我發現我只能使用sscanf()一次,否則無法檢索argv中的下一個字符串。 這是我的代碼。爲什麼用argv []調用sscanf()只能使用一次?

int main(int argc, char *argv[]) 
{ 
    char t; 
    float temp; 
    sscanf(argv[1], "-%[cf]",&t); 
    sscanf(argv[2], "%f", &temp); 
    return 0; 
} 

只有第一個sscanf()可以獲得格式化的值。 我怎樣才能完成argv [2]?

+3

'argc'的價值是什麼。 'argv [2]'裏面有什麼? –

+2

如果'argv [2]'是一個正確格式的浮點數,這應該工作。 –

+4

你怎麼知道它不像你期望的那樣工作?無論如何,請提供一個您正在調用此程序的示例命令行。 –

回答

3

嘗試將字符串數據保存在導致未定義行爲(UB)的char中。

"%[]"預計匹配一個字符數組。

// char t; 
// sscanf(argv[1], "-%[cf]",&t); 

char t[100]; 
if (sscanf(argv[1], "-%99[cf]",t) != 1) Handle_Failure(); 

推薦:
添加的寬度限制,像99,以限制字符串輸入。設置爲小於t的尺寸1。
檢查返回值sscanf()

相關問題