我想要一个简单的教程来向我展示加载yaml文件并解析数据.外派风格会很棒,但实际上以某种形式显示数据的任何解决方案都会很有用.
到目前为止,我在yaml-0.1.1源代码中为C运行了多次测试,我得到一个错误,没有输出,或者在run-emitter.c情况下.它读取yaml文件并将其打印到STDOUT,它不会通过libyaml函数/结构生成文本.在有错误的情况下我不知道是不是bc文件坏了或我的构建不正确(我没有修改任何东西......)该文件是从yaml.org复制的
谁能指点我一个教程?(我用谷歌搜索至少30分钟阅读任何看起来相关的东西)或者一个有一个很好的教程或例子的lib的名字.也许你可以告诉我哪些libyaml测试加载到文件中并对其执行某些操作或为什么会出现错误.本文档不解释如何使用该文件,仅说明如何加载它.
我得到一个struct tm,我想将它转换为具有此特定输出的字符串:
dd-mm-yyyy hh:mm
除了月份(mm)之外,一切都是数字,例如:
2010年10月14日10:35
这是我目前的代码:
struct stat sb;
if (lstat(path, &sb) == 0) {
struct tm *pmytm = gmtime(&sb.st_mtime);
sprintf(array[index]->mtime, "%d-%d-%d %d:%d", pmytm->tm_mday, pmytm->tm_mon, 1900 + pmytm->tm_year, pmytm->tm_hour, pmytm->tm_min);
Run Code Online (Sandbox Code Playgroud)
问题是我不知道如何有效地将pmytm-> tm_mon转移到月份.你是否建议我构建一个数月的数组并且只是索引到该数组(用我的sprintf中的%s替换%d),或者是否有更好的解决方案?
另外,我有几小时和几分钟的问题.如果它低于10(2个数字),它将只显示一个数字,如:10:8而不是10:08.我怎么能解决这个问题?
非常感谢您的帮助,
编辑:作为一个解决方案我想到的是什么(优雅?):
static char *months[] = { "", "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" };
struct stat sb;
if (lstat(path, &sb) == 0) {
struct tm *pmytm = gmtime(&sb.st_mtime);
sprintf(array[index]->mtime, "%02d-%s-%d %02d:%02d", pmytm->tm_mday, months[pmytm->tm_mon], 1900 + pmytm->tm_year, pmytm->tm_hour, pmytm->tm_min);
Run Code Online (Sandbox Code Playgroud)
Jary