2012-02-02 53 views
2

試圖找出如何通過文件讀取多個變量。例如我知道如何閱讀一個,如果我有一個名爲「datainput」的文件,其中有文本行「150」,然後在我的程序中,如果我有int值的文件;然後scanf(「%d」,&值);當我用該文件運行程序時,它會讀取該文件,然後將其應用於我的變量。但我現在想要做的是類似的東西,但讀取2個值,所以在我的文本文件中說我會有這樣的「3.1,3.4」,然後把它放在變量1和2這樣的東西。有人有主意嗎?C編程ScanF多輸入一個文件

+1

這將是更容易理解這個問題,如果你發佈你的代碼,而不是僅僅試圖解釋全部用文字表達。 – 2012-02-02 05:17:24

回答

2

要在兩個數值閱讀所有你需要做的就是增加一個額外的格式說明的scanf()電話:

scanf("%d %d", &value1, &value2); //reads two values 

而且,只是要注意,如果你從文件中讀取你需要使用的功能fscanf具有類似的格式,以scanf除非你需要傳遞一個指針文件,您正在使用:

char inFileName[] = "input.txt"; 

    FILE *inFile; 

    /* open the input file */ 
    inFile = fopen(inFileName, "r"); 

    fscanf(inFile, "%d %d", &value1, &value2); //reads two values from FILE inFile 
+0

它只是使用空格作爲分隔符? – CMOS 2012-02-02 05:20:35

+1

@CalvinMoss如果空間是如何在文件中分開的話,那麼是的。你可以在你想要的文件中使用其他分隔符(例如,如果你用逗號分隔值:'value1,value2',那麼你的scanf就是'scanf(「%d,%d」,&value1,&value2);' – 2012-02-02 05:28:10

+1

我們是否從這樣的文件中讀取? – dicaprio 2012-02-02 05:29:30

1

如果你的格式是:

3.1, 3.4 

嘗試:

float float1, float2; 
int num_things_read = scanf("%f, %f",&float1,&float2); 

The scanf() man page擁有所有可以使用的格式的完整列表。格式字符串可用於指定輸入的格式,非常類似printf()可用於指定輸出的格式(儘管不完全相同)。

還有一系列簡短的例子here

作爲一個評論者所指出的,如果你從文件中讀取,你需要使用fscanf()

int num_things_read = fscanf(stream, "%f, %f",&float1, &float2); 

哪裏stream是您之前已打開fopen()的東西,如一個文件。

+0

它只是使用空格作爲分隔符?例如,如果我做了2.2 -4.0,它會工作,如果我只是做了scanf(「%f%f」,&value1,&value2);而不是逗號 – CMOS 2012-02-02 05:20:41

+1

格式字符串中的空格對應於輸入中的零個或多個空格字符 - 因此如果您的格式字符串爲「%f,%f」',但輸入爲「1.2,1.5」' ,兩個值都被讀取。 – 2012-02-02 05:24:56

+1

什麼?是不是OP詢問從文件中讀取? – dicaprio 2012-02-02 05:28:11