【C語言進階】通訊錄的儲存和載入

Anton2/3發表於2020-11-16

儲存功能

這裡是對之前通訊錄的功能進行完善因為在日常使用的通訊錄裡當我們關閉之後再次開啟會繼續顯示出之前所儲存過的聯絡人和資訊。對之前資訊的儲存。
這裡就會用到之前所學習的檔案操作來進行編寫和實現。

FILE* fout = fopen(“contact_book.txt”, “w”);

當我們要儲存是得先建立一個儲存進去的檔案這串程式碼就是建立一個只寫檔案contact_book.txt的檔案。
然後對結構體裡邊的資訊進行儲存。這裡就可以用迴圈將通訊錄跑一邊將其中的資訊。
例如:
addr
name
tel
age
來進行儲存,儲存在之前建立的contact_book.txt當中。

載入功能

那麼載入功能也就可以理解為當我們在換手機SIM卡的時候在這裡插入圖片描述
將之前檔案當中的資訊傳輸給此時的通訊錄當中將這樣的結果成為載入Load功能。

FILE* fin = fopen(“contact_book.txt”, “r”);

這裡對這個檔案進行只讀的操作。
將我們之前的定義的結構體資訊匯入就相當於去建立新的聯絡人的感覺。這裡有可能進行的是多組輸入我們就可以用之前學的EOF作為迴圈的結束條件(文字檔案)。然後將檔案中的東西載入到pcb當中也就是ADD進我們的通訊錄系統。這樣就是實現了載入。

程式碼實現

void ContactBookSave(ContactBook* pcb)//儲存
{
	FILE* fout = fopen("contact_book.txt", "w");
	for (int i = 0; i < pcb->size; ++i)
	{
		fprintf(fout, "%s %d %s %s\n", pcb->contactArray[i].addr, pcb->contactArray[i].age, pcb->contactArray[i].name, pcb->contactArray[i].tel);
	}

	fclose(fout);
}
void ContactBookLoad(ContactBook* pcb)//載入
{
	FILE* fin = fopen("contact_book.txt", "r");

	Contact ct;
	int ret = fscanf(fin, "%s %d %s %s\n", ct.addr, &ct.age, ct.name, ct.tel);
	while (ret != EOF)
	{
		ContactAdd(pcb, ct);
		ret = fscanf(fin, "%s %d %s %s\n", ct.addr, &ct.age, ct.name, ct.tel);
	}

	fclose(fin);
}

註釋:之前通訊錄的後續。

相關文章