c语言读取txt文件到数组

99ANYc3cd6
预计阅读时长 12 分钟
位置: 首页 C语言 正文

C语言读取txt文件到数组

在C语言中,读取文本文件内容到数组是一个常见任务,下面我将介绍几种不同的方法来实现这个功能,包括读取整数、字符串或混合数据。

c语言读取txt文件到数组
(图片来源网络,侵删)

方法1:读取整数到数组

假设你的txt文件包含一行或多行整数,用空格或换行符分隔。

#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100  // 定义数组最大容量
int main() {
    FILE *file;
    int numbers[MAX_SIZE];
    int count = 0;
    int num;
    // 打开文件
    file = fopen("data.txt", "r");
    if (file == NULL) {
        printf("无法打开文件\n");
        return 1;
    }
    // 读取文件内容到数组
    while (fscanf(file, "%d", &num) == 1 && count < MAX_SIZE) {
        numbers[count++] = num;
    }
    // 关闭文件
    fclose(file);
    // 打印读取的内容(可选)
    printf("读取到 %d 个整数:\n", count);
    for (int i = 0; i < count; i++) {
        printf("%d ", numbers[i]);
    }
    printf("\n");
    return 0;
}

方法2:读取字符串到数组

假设你的txt文件每行一个字符串。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_LINES 100  // 最大行数
#define MAX_LENGTH 100 // 每行最大长度
int main() {
    FILE *file;
    char lines[MAX_LINES][MAX_LENGTH];
    int count = 0;
    // 打开文件
    file = fopen("data.txt", "r");
    if (file == NULL) {
        printf("无法打开文件\n");
        return 1;
    }
    // 读取文件内容到数组
    while (fgets(lines[count], MAX_LENGTH, file) != NULL && count < MAX_LINES) {
        // 去除换行符
        lines[count][strcspn(lines[count], "\n")] = '\0';
        count++;
    }
    // 关闭文件
    fclose(file);
    // 打印读取的内容(可选)
    printf("读取到 %d 行文本:\n", count);
    for (int i = 0; i < count; i++) {
        printf("%s\n", lines[i]);
    }
    return 0;
}

方法3:动态分配数组(适用于不确定文件大小的情况)

#include <stdio.h>
#include <stdlib.h>
int main() {
    FILE *file;
    int *numbers = NULL;
    int count = 0;
    int capacity = 10; // 初始容量
    int num;
    // 分配初始内存
    numbers = (int *)malloc(capacity * sizeof(int));
    if (numbers == NULL) {
        printf("内存分配失败\n");
        return 1;
    }
    // 打开文件
    file = fopen("data.txt", "r");
    if (file == NULL) {
        printf("无法打开文件\n");
        free(numbers);
        return 1;
    }
    // 读取文件内容到动态数组
    while (fscanf(file, "%d", &num) == 1) {
        // 如果数组已满,扩容
        if (count == capacity) {
            capacity *= 2;
            int *temp = (int *)realloc(numbers, capacity * sizeof(int));
            if (temp == NULL) {
                printf("内存重新分配失败\n");
                free(numbers);
                fclose(file);
                return 1;
            }
            numbers = temp;
        }
        numbers[count++] = num;
    }
    // 关闭文件
    fclose(file);
    // 打印读取的内容(可选)
    printf("读取到 %d 个整数:\n", count);
    for (int i = 0; i < count; i++) {
        printf("%d ", numbers[i]);
    }
    printf("\n");
    // 释放内存
    free(numbers);
    return 0;
}

注意事项

  1. 错误处理:始终检查文件是否成功打开,内存是否分配成功。
  2. 数组大小:如果使用固定大小的数组,确保不会超出其容量。
  3. 文件格式:根据你的txt文件格式选择合适的读取方法。
  4. 内存管理:动态分配的数组记得在最后释放内存。
  5. 换行符:使用fgets读取字符串时,可能需要去除末尾的换行符。

选择哪种方法取决于你的具体需求,包括文件格式、数据类型和预期文件大小。

c语言读取txt文件到数组
(图片来源网络,侵删)
-- 展开阅读全文 --
头像
标签如何调用?
« 上一篇 今天
织梦文件保存目录为空
下一篇 » 今天

相关文章

取消
微信二维码
支付宝二维码

目录[+]