首先,你需要檢查兩件事情:
當你聲明的結構,你基本上是定義一個定製的用戶類型。 因此,每次您想要創建該類型的新變量時,都需要在結構的名稱前加上保留字struture
。根據你的代碼,這將是這樣的:struct ListNode *e;
然後,你試圖發送到你的函數LinkedList
參數。但是,如果你發送一個struct ListNode *
參數,我認爲更容易,所以通過這種方式你將「知道」列表中的第一個元素是什麼。但是,您使用的方法也是有效的。
談到功能,你正在聲明一個int
返回類型的函數。在你的代碼中,你沒有輸入return
聲明。如果您不想返回值,只需將返回類型更改爲void
即可。否則,只返回一個整數。
最後只需使用fopen
,這是一個可以幫助您在系統中打開文件的功能。該函數中的第一個參數是要打開/創建的文件的名稱,第二個參數是要打開它的「方式」(技術上稱爲「模式」)。只需發送「w」,這意味着寫。
你說你想寫一個單行的值。要做到這一點,請在您的打印語句中省略\n
字符並打印一個' '
(空格字符)。
一些代碼:
struct ListNode
{
int value;
struct ListNode * next;
};
void llist_save(LinkedList * list, char * file_name)
{
struct ListNode *e = list->head;
FILE * fd = fopen(file_name, "w");
while(e != NULL) {
fprintf(fd, "%d ", e->value);
e = e->next;
}
fclose(fd);
}
我的大腦不能處理英語非常好,現在,對於那個很抱歉。
它可能有助於提供錯誤,但首先檢查如何打開文件。 – bereal 2015-03-03 04:18:09
「ListNode * e = list-> head;」應該是「struct ListNode * e = list-> head;」除非你使用typedef作爲結構聲明。這同樣適用於llist_save()函數中的參數LinkedList *列表。 – mevqz 2015-03-03 04:20:18
請參閱:[**寫入鏈接列表到二進制文件(C)**](http://stackoverflow.com/questions/19444803/writing-a-linked-list-to-binary-filec)和[**使用fwrite將鏈接列表中的數據寫入二進制文件中(http://stackoverflow.com/questions/19435767/writing-data-from-a-linked-list-to-a-binary-file-using -fwrite) – 2015-03-03 05:03:28