2017-02-09 62 views
0

我需要說的編譯,我是新手,在C和我只寫了約100-150行代碼在C屬性文件讀取C(沒有C#或C++)使用MinGW

我需要閱讀用的.properties文件中的條目類似如下:

Value1 = Hello 
Value2 = Bye 

我希望得到這樣的價值觀:

bla.getValue("Value1"); 

這樣就可以與它的工作是這樣的:

foo = bla.getValue("Value1"); 
bar = bla.getValue("Value2"); 
printf("%s - %s",foo,bar); 

我不需要他們做任何事情,而不是將它們打印到屏幕上。

我發現了兩個問題在這裏,它走進了正確的方向,但他們無法幫助我在我的任務:
How to read configuration/properties file in C?

Properties file library for C (or C++)
我嘗試了上述線程的答案多,但無論哪種方式,我的編譯器(MinGW的)不喜歡這些行之一:

using foo::bar; 
or 
using namespace foo; 

當我嘗試編譯我的代碼,我得到一個錯誤說:
錯誤:

#include <windows.h> 
#include <stdio.h> 
#include <string.h> 
using platformstl::properties_file; 

int WINAPI WinMain(HINSTANCE a,HINSTANCE b,LPSTR c,int d) 
{ 
char *tPath, *tWindow; 
char *search = " "; 

tWindow = strtok(c, search); 
tPath = strtok(NULL, search); 
properties_file properties("%s",tPath); 

properties::value_type value1 = properties["Value1"]; 
properties::value_type value2 = properties["Value2"]; 

printf("Window: %s; Path: %s; %s %s",tWindow,tPath,value0,value1); 
} 

我使用的WinMain,因爲PROGRAMM就是找到一個:「使用」

這是我試圖執行的線程的上述給定的溶液中的代碼未知類型名打開窗戶。我沒有包含代碼的這些部分,因爲它們與我的問題無關,並且工作得很好。 strtok();部件也適用於我。我需要他們,因爲窗口的標題查找和屬性文件的路徑都給出命令行參數:

programm.exe windowtitle path/to/properties/file

當我和其他的答案,這讓我加載某些庫試過了,我得到了到某個地方,所需的庫不包含所需的頭文件。有些庫甚至用於C++,我有一個限制,所以我不能使用它。

我希望能讓事情更清楚一些,因爲您可能知道我不習慣在這裏提問。 :)

+2

這個問題要麼是脫離主題,要麼是廣泛的。請花些時間閱讀[幫助頁面](http://stackoverflow.com/help),尤其是名爲[「我可以問些什麼話題?」]的章節(http://stackoverflow.com/help/)討論話題)和[「我應該避免問什麼類型的問題?」](http://stackoverflow.com/help/dont-ask)。另請[請閱讀如何提出好問題](http://stackoverflow.com/help/how-to-ask)以及如何創建[最小,完整和可驗證示例](http://stackoverflow.com /幫助/ MCVE)。 –

+0

我不明白你的第一個鏈接不能工作嗎? – KevinDTimm

+0

歡迎來到Stack Overflow!請[編輯]你的問題,以顯示[你迄今爲止所嘗試的](http://whathaveyoutried.com)。您應該包含您遇到問題的代碼[mcve],然後我們可以嘗試幫助解決特定問題。你還應該閱讀[問]。 –

回答

0

我用一個很大的解決方法解決了我的問題。

這是我的最終代碼:

if(vn != NULL){ 
for(i = 0; i < 1; i++){ 
    if(fgets(temp, BUF, vn) == NULL){ 
    printf("Line is empty"); 
    return 2; 
    } 
} 
if(fgets(puffer, BUF, vn) == NULL){ 
    printf("Line is empty"); 
    return 2; 
} 
tVariable = strtok(puffer, find); 
tValue = strtok(NULL, find); 
}else { 
printf("Unable to read File"); 
return 2; 
} 

我剛纔讀給定文件的第二行和削減它在=跡象。

我知道,我需要閱讀第二行,因爲我需要的屬性總是在.properties文件的第二行中找到。

我現在有我想要的價值tValue,所以我可以用它來打印出printf("%s", tValue)