c语言读取txt文件到链表
时间: 2025-02-22 17:17:16 浏览: 36
### C语言实现读取TXT文件内容并存储至链表
为了将TXT文件中的内容读入到链表中,可以采用如下方法:
#### 创建链表节点结构体
首先定义一个用于表示联系人的结构体,其中包含姓名、电话号码以及其他可能的信息字段。
```c
typedef struct Contact {
char name[50];
char phoneNumber[15]; // 假设最长为14位数加上国家区号前缀
struct Contact* next;
} Contact;
```
#### 初始化链表头指针
创建指向链表头部的全局变量`head`,初始化为空(NULL),这将是整个列表的第一个元素的位置指示器[^2]。
```c
Contact* head = NULL; /* 初始状态下链表为空 */
```
#### 定义辅助函数来分配新结点的空间
每当要添加新的记录时都需要调用malloc()为新加入的对象开辟足够的空间,并设置其成员值以及next域指向NULL作为结束标志。
```c
/* 动态分配一个新的联系人节点 */
Contact* createNewNode(const char *name, const char *phoneNumber) {
Contact* newNode = (Contact*)malloc(sizeof(Contact));
strcpy(newNode->name, name);
strcpy(newNode->phoneNumber, phoneNumber);
newNode->next = NULL;
return newNode;
}
```
#### 编写从文本文件加载数据的方法
利用fopen(), fscanf()等标准I/O操作打开指定路径下的.txt格式的目标文档;接着逐行解析每一项条目直至遇到EOF为止,在此过程中不断构建起完整的单向链接序列[^3]。
```c
void loadContactsFromFile(const char* filename){
FILE* filePtr = fopen(filename,"r");
if (!filePtr) { perror("无法打开文件"); exit(EXIT_FAILURE); }
char bufferName[50], bufferPhoneNum[15];
while(fscanf(filePtr,"%s %s",bufferName,bufferPhoneNum)!= EOF){
Contact* newEntry = createNewNode(bufferName, bufferPhoneNum);
if(head==NULL){
head=newEntry;
}else{
Contact* temp=head;
while(temp->next!=NULL){
temp=temp->next;
}
temp->next=newEntry;
}
}
fclose(filePtr);
}
```
上述代码片段展示了如何使用C语言完成从TXT文件读取信息并将其转换成内存中的链表形式的过程。每当我们希望增加更多功能比如按名字查找特定的人或是删除某个人的时候只需要在此基础上扩展逻辑即可[^1]。
阅读全文
相关推荐
















