我有一個程序要麼從一個文件或從標準輸入的數據。 我寫了使用sscanf掃描文件的代碼。 我想知道如果我可以重用該代碼,但與標準輸入,而不是使用scanf?有沒有辦法與標準輸入法一起使用sscanf?
例如:
我該如何修改它,以便它可以使用標準輸入?
while(fgets(buffer, MAX_LEN, input) != NULL) {
if (sscanf(buffer, "%s %s %s", one, two, three) == 3) { }
}
我有一個程序要麼從一個文件或從標準輸入的數據。 我寫了使用sscanf掃描文件的代碼。 我想知道如果我可以重用該代碼,但與標準輸入,而不是使用scanf?有沒有辦法與標準輸入法一起使用sscanf?
例如:
我該如何修改它,以便它可以使用標準輸入?
while(fgets(buffer, MAX_LEN, input) != NULL) {
if (sscanf(buffer, "%s %s %s", one, two, three) == 3) { }
}
你並不需要改變sscanf()
電話 - 這是fgets()
呼叫從輸入文件中讀取。
您可以通過stdin
在fgets()
呼叫字面上更換input
更改您的代碼段與stdin
工作(stdin
是stdio.h
宣佈全球FILE *
是指標準輸入)。
當然,你也可以分配'input = stdin;',因爲它只是一個指針。 –
請添加一些代碼。只是一個鏈接不是一個答案。 – ThiefMaster
開玩笑吧?如果問這個問題的人知道如何使用fgets和scanf,他們肯定知道如何使用fscanf。他們顯然只是不知道它的存在。 – goji
fgets(buffer,MAX_LEN,input)
中的第三個參數,即input
是輸入源的來源。在您的情況下,它應該替換爲stdin
,以便它從標準控制檯而不是文件輸入。
sscanf解析來自char *的數據。所以根本沒有文件。你可能想從標準輸入讀入緩衝區,而不是從某個文件讀入緩衝區。 – rici
看看可以從標準輸入讀取的fscanf –
也許你需要的是'fscanf',第一個參數將指定數據源。 – halfelf