還有其它的方法(例如,你可以使用Flex),但我覺得稍微好一點的使用sscanf
將最有意義:
char buffer[256];
char value[128];
fgets(buffer, sizeof(buffer), fp);
if (1==sscanf(buffer, "x=%127s", value))
// we read a value -- now use it however needed.
編輯:這裏的基本想法是很簡單。我們從閱讀整個fgets
開始。然後我們使用sscanf
來嘗試在該行中匹配x=<whatever>
。如果我們找到它,我們就有我們關心的價值。如果我們沒有找到它,sscanf將返回0,因爲它返回它轉換的項目數 - 如果它不匹配我們指定的x=
,它將不會轉換任何東西,所以sscanf將返回0,並且我們知道這條線不匹配。
編輯2:這裏有一個小的演示程序,從文件中讀取數據,並打印出了下面的表格x=<whatever>
線的值,其前後x
後容許空間和=
:
#include <stdio.h>
int main() {
FILE *infile = fopen("Somefile.txt", "r");
char buffer[256];
char value[128];
while (fgets(buffer, sizeof(buffer), infile))
if (1 == sscanf(buffer, " x = %127s", value))
printf("Value = %s\n", value);
return 0;
}
我這個測試它作爲輸入:
some junk
#a comment
a = 1 ; a couple other variables.
b = 2
x = 3
x = 4
x=5
我得到的結果是:
Value = 3
Value = 4
Value = 5
感謝您的快速回復,請您詳細描述您的答案? – Nimit 2012-03-02 06:13:28
很好。但是,將文件數據存儲到緩衝區是否好?你能給我提供以上的例子與文件操作?非常感謝。 – Nimit 2012-03-02 06:22:22
我建議在格式字符串的'='周圍留出空格,如下所示:'「x =%127s」'。這將允許用戶在文件中的'='周圍留出空間。 – 2012-03-02 06:22:54