[英]Creating a global char pointer
我正在編程(實際上即將完成)一個CLI程序,以測試用戶的詞匯量,或者測試他/她將要定義的任何問題和答案。
完整的github上的源代碼: https : //github.com/megamasha/Vocab-Tester
從文件加載和保存到文件是通過main()之外的單獨函數處理的。 目前,它們在同一個源文件中,但是我想知道如何在文件中(a)和b)(如果它們最終在單獨的數據庫ops文件中)來做到這一點。
我想允許用戶保存到他最近加載的文件,所以我希望我的loaddatabase()
函數為文件名定義一個全局char *,然后savedatabase()
函數可以訪問該文件名。
如果我在任何函數外部聲明char *,則它是只讀的,嘗試向其寫入文件名會導致段錯誤。 如果我在loaddatabase()
函數中聲明它,則savedatabase()
無法訪問它。
聲明變量static是否將允許其他函數訪問它,或者如果不允許,如何允許兩個函數訪問同一字符*?
您可以通過在單個.c
文件中定義全局變量來定義全局變量:
char * database;
並在.h
文件中聲明:
extern char * database;
並且通過在每個使用該變量的文件中包含.h
文件。
extern關鍵字聲明變量而不定義它。 它告訴編譯器該變量存在於另一個文件中。
因此,對於您的問題,您可以在加載/保存函數的文件中定義char * database
,並在主函數的文件中聲明它( extern char * database
)。
如果您不想為文件名分配和釋放內存,則可以使用char database[1024]
而不是char * database
執行相同的操作。 這樣,您可以直接寫入數據庫 。
您需要聲明一個字符數組,即char filename [260]。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.