首页
学习
活动
专区
工具
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文件中读取数据并存储在链表中,并且在控制台输出链表中的数据。你可以根据实际需求对代码进行修改和优化,例如添加错误处理,扩展链表结构体等。

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

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

相关·内容

1分51秒

Ranorex Studio简介

24分28秒

GitLab CI/CD系列教程(四):.gitlab-ci.yml的常用关键词介绍与使用

38秒

Lightroom Classic教程:如何在Mac Lightroom 中创建黑色电影效果

9分12秒

运维实践-在ESXI中使用虚拟机进行Ubuntu22.04-LTS发行版操作系统与密码忘记重置

1时29分

如何基于AIGC技术快速开发应用,助力企业创新?

1分29秒

U盘根目录乱码怎么办?U盘根目录乱码的解决方法

15分13秒

【方法论】制品管理应用实践

1时8分

TDSQL安装部署实战

26分40秒

晓兵技术杂谈2-intel_daos用户态文件系统io路径_dfuse_io全路径_io栈_c语言

3.4K
16分8秒

Tspider分库分表的部署 - MySQL

2分43秒

ELSER 与 Q&A 模型配合使用的快速演示

4分29秒

MySQL命令行监控工具 - mysqlstat 介绍

领券