首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C从txt文件中读取并存储在链表中

,可以使用文件操作相关函数和链表操作相关函数来实现。

首先,需要打开txt文件并读取其内容。可以使用C语言中的文件操作函数fopen()来打开文件,fscanf()函数来读取文件内容,并将读取到的数据存储到链表中。

接下来,可以定义一个链表结构体来存储从txt文件中读取的数据。链表节点可以包含一个数据域,用来存储从txt文件中读取的数据,并包含一个指向下一个节点的指针域。

然后,可以定义一个函数来读取txt文件并将数据存储在链表中。函数的基本步骤如下:

  1. 定义链表节点结构体。
  2. 打开txt文件,获取文件指针。
  3. 创建头节点。
  4. 循环读取文件内容,每次读取一行数据,并创建一个新的节点。
  5. 将读取到的数据存储到新节点的数据域中。
  6. 将新节点插入链表中。
  7. 关闭文件。
  8. 返回链表的头节点。

下面是一个示例代码:

代码语言:txt
复制
#include <stdio.h>
#include <stdlib.h>

// 定义链表节点结构体
typedef struct Node {
    char data[100]; // 假设每行数据最大长度为100
    struct Node* next;
} Node;

// 读取txt文件并存储在链表中
Node* readTxtFileToList(const char* filename) {
    FILE* file = fopen(filename, "r"); // 打开txt文件
    if (file == NULL) {
        printf("Failed to open file: %s\n", filename);
        return NULL;
    }

    Node* head = NULL;
    Node* tail = NULL;

    char line[100];
    while (fgets(line, sizeof(line), file)) { // 逐行读取文件内容
        // 创建新节点
        Node* newNode = (Node*)malloc(sizeof(Node));
        if (newNode == NULL) {
            printf("Failed to allocate memory.\n");
            break;
        }
        newNode->next = NULL;

        // 存储数据到新节点的数据域
        strncpy(newNode->data, line, sizeof(newNode->data));

        if (head == NULL) {
            head = newNode;
            tail = newNode;
        } else {
            tail->next = newNode;
            tail = tail->next;
        }
    }

    fclose(file); // 关闭文件

    return head;
}

int main() {
    const char* filename = "data.txt";
    Node* head = readTxtFileToList(filename);
    if (head == NULL) {
        printf("Failed to read and store data from txt file.\n");
        return -1;
    }

    // 打印链表中的数据
    Node* curr = head;
    while (curr != NULL) {
        printf("%s", curr->data);
        curr = curr->next;
    }

    // 释放链表内存
    Node* temp;
    curr = head;
    while (curr != NULL) {
        temp = curr->next;
        free(curr);
        curr = temp;
    }

    return 0;
}

以上示例代码实现了从txt文件中读取数据并存储在链表中,并且在控制台输出链表中的数据。你可以根据实际需求对代码进行修改和优化,例如添加错误处理,扩展链表结构体等。

需要注意的是,该示例代码只是提供了一个基本的实现思路,实际开发中可能还需要考虑其他因素,如内存管理、异常处理、并发等。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券