我在使用 mongodb C 驱动程序使用的函数时遇到了一些问题。有问题的函数如下所示:
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);
最佳答案
如果您觉得需要转换函数的返回值,那么您很可能做错了什么。
首先,您应该将 filename
声明为 char const*
,因为这是您期望函数返回的内容。
那么,您可能没有该函数的正确原型(prototype)。您应该有一个附带的包含文件。作为最后的手段,将原型(prototype)声明为
char const * gridfile_get_field (gridfile *gfile, const char *name);
(您的编译器可能会使用该函数返回 int
,剪切高位并将其重新解释为 char*
)
关于c - 如何在此实例中使用从函数返回的 const char 指针? (mongodb相关),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10691700/