簡體   English   中英

創建一個全局字符指針

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM