2009-11-10 187 views
0

我想使用簡單的C程序來讀取一個簡單的YAML文件。我認爲最好的方法是使用以下庫:Pyyaml.org。使用C腳本讀取YAML文件

閱讀維基頁面後,我試着在這裏使用了一些例子: http://pyyaml.org/browser/libyaml/branches/stable/tests/ 但像我這樣的小白,這不是很簡單的理解。

舉例來說,如果我得到這個更加簡單YAML文件(名爲test.yml):

test: 
    - {conf: hi} 
    - {conf: test} 
    - {conf: abc} 

我該怎麼做才能做到somethig這樣的:

#include <stdio.h> 
#include <stdlib.h> 

int main(int argc, char **argv) 
{ 
    /* I do not really see how to load the file here... */ 

    char *conf[3] = {"hi", "test", "abc"}; /* configuration of the YAML file */ 

    int i; 
    for (i = 0; i < 3; i++) 
    { 
    printf("content: %s\n", conf[i]); 
    } 

    return 0; 
} 

...但從給定的YAML文件?

非常感謝您的任何建議!

+1

「script」這個詞的定義不是很明確,但我認爲大多數人會同意C不是一種腳本語言:) – Thomas 2009-11-10 16:28:35

+0

另外,PyYAML是一個Python庫。祝你好運使用它從C. – Thomas 2009-11-10 16:30:10

+0

我想他意味着他想要使用libYAML庫,這是鏈接的測試是什麼(以及PyYAML基於什麼) – 2009-11-10 16:49:33

回答

1

libyaml似乎是以事件爲基礎的,這通常意味着它對速度進行了調整,而對於易用性來說則更少。並且周圍沒有太多例子(至少對於原始的C代碼來說,腳本語言綁定更受歡迎)。源代碼分發在測試目錄中有一些示例代碼。最全面的似乎是deconstructor example。它很長但很好評論,所以很容易遵循。

通常,我不確定YAML對C代碼有多大用處。 YAML最大的優勢在於它可以自然地映射到Python和Perl等腳本語言所使用的數據類型 - 嵌套到任意級別的列表和字典。將這種嵌套結構簡單地序列化爲YAML的能力使其具有吸引力。我很好奇爲什麼你需要YAML的C代碼。