2012-10-08 108 views
0

我有一個程序要麼從一個文件或從標準輸入的數據。 我寫了使用sscanf掃描文件的代碼。 我想知道如果我可以重用該代碼,但與標準輸入,而不是使用scanf?有沒有辦法與標準輸入法一起使用sscanf?

例如:

我該如何修改它,以便它可以使用標準輸入?

while(fgets(buffer, MAX_LEN, input) != NULL) { 
    if (sscanf(buffer, "%s %s %s", one, two, three) == 3) { } 
} 
+0

sscanf解析來自char *的數據。所以根本沒有文件。你可能想從標準輸入讀入緩衝區,而不是從某個文件讀入緩衝區。 – rici

+0

看看可以從標準輸入讀取的fscanf –

+5

也許你需要的是'fscanf',第一個參數將指定數據源。 – halfelf

回答

3

你並不需要改變sscanf()電話 - 這是fgets()呼叫從輸入文件中讀取。

您可以通過stdinfgets()呼叫字面上更換input更改您的代碼段與stdin工作(stdinstdio.h宣佈全球FILE *是指標準輸入)。

+0

當然,你也可以分配'input = stdin;',因爲它只是一個指針。 –

0

fgets(buffer,MAX_LEN,input)中的第三個參數,即input是輸入源的來源。在您的情況下,它應該替換爲stdin,以便它從標準控制檯而不是文件輸入。

相關問題