创建全局char指针

时间:2011-08-27 08:40:44

标签: c pointers global-variables global

我正在编程(实际上接近完成)一个CLI程序,用于测试用户的词汇量,或者他/她将要关注的任何问题和回答。

github上的完整资源:https://github.com/megamasha/Vocab-Tester

从文件加载并保存到文件是从main()之外的单独函数处理的。目前他们在同一个源文件中,但我想知道如何在文件中执行此操作,以及b)在最终位于单独的数据库操作文件中的情况下。

我想允许用户保存到他最近加载的文件,所以我希望我的loaddatabase()函数为文件名定义一个全局char *,然后savedatabase()函数可以访问

如果我在任何函数之外声明一个char *,它是只读的,并且尝试向其写入文件名会导致段错误。 如果我在loaddatabase()函数中声明它,savedatabase()无法访问它。

声明变量static会允许其他函数访问它,或者如果没有,我如何允许两个函数访问相同的char *?

2 个答案:

答案 0 :(得分:2)

您可以通过在单个.c文件中定义全局变量来定义全局变量:

char * database;

并在.h文件中声明:

extern char * database;

并在每个使用该变量的文件中包含.h文件。

extern 关键字声明变量而不定义它。它说编译器该变量存在于另一个文件中。

因此,对于您的问题,您可以在加载/保存函数的文件中定义char * database,并在主函数的文件中声明它(extern char * database)。

如果您不想为文件名分配和释放内存,则可以使用char database[1024]而不是char * database执行相同的操作。这样您就可以直接写入数据库

答案 1 :(得分:1)

您需要声明一个字符数组,即char filename [260]。