0

我在使用 mongodb c 驱动程序使用的 aa 函数时遇到了一些麻烦。有问题的函数如下所示:

gridfile_get_field (gridfile *gfile, const char *name) (returns const char *)

我正在尝试以下列方式使用它:

const char * field = "file";
char * filename;
filename = (char *)gridfile_get_field(&gfile, field);
FILE * file;
file = fopen("test.txt", "a+");
fprintf(file, "file contains: %s\n", filename);
fclose(file);

但是,执行后,我在 test.txt 中看到了这一点:

file contains: ^A
file contains: ^A
file contains: ^A

我不确定我做错了什么。我指定的字段存在于我存储在 gridfs 中的所有文件中,所以我不认为是这种情况(指定不存在的内容只是“文件包含:”中的文件,之后没有字符)。我想我在指针方面做错了。如果有人有任何建议,那就太棒了。

编辑:: 真正的声明是

const char * gridfile_get_field (gridfile *gfile, const char *name);
4

2 回答 2

0

如果您觉得需要强制转换函数的返回值,那么您很可能做错了什么。

首先,您应该声明filename为is,char const*因为这是您期望函数返回的内容。

然后,您可能没有该函数的正确原型。您应该有一个随附的包含文件。作为最后的手段,将原型声明为

char const * gridfile_get_field (gridfile *gfile, const char *name);

(您的编译器可能正在使用该函数返回int高位的 , 切割并将其重新解释为 a char*

于 2012-05-21T20:12:22.867 回答
0

原来是 MongoDB C 驱动程序的一个问题——它没有返回正确的信息。我认为这个问题将在即将发布的版本中得到解决。

于 2012-06-04T18:05:45.947 回答