c - 如何在此实例中使用从函数返回的 const char 指针? (mongodb相关)

标签 c mongodb pointers gridfs const-char

我在使用 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/

相关文章:

c - O_CLOEXEC 和 TIOCEXCL 之间的区别

c - 如何在 Microchip C30 编译器中创建指向常量数组的指针数组

java - 如何防止 Java 的 Mongo 驱动程序转义查询中的引号

c - 如何使用函数推进数组基地址?

C:使用指针时如何分配内存?

c - 结构不兼容类型错误

c - 我如何在 kdevelop 中使用 glib?

mongodb - 更新大量数据的最快方法

php - MongoDB 在发现空白条目时显示错误

c - 关于指针