欢迎访问宙启技术站
智能推送

使用C++怎么从txt文件中读取二维数组

发布时间:2023-05-14 21:45:47

从txt文件中读取二维数组通常有多种方法,但是在使用C语言时最常见的方法是使用文件流和循环读取文件的数据。以下是一个典型的步骤:

1. 定义一个二维数组并确定其大小。假设我们有一个10行20列的数组:

#define ROWS 10
#define COLS 20
int array[ROWS][COLS];

2. 打开txt文件并创建一个文件指针:

FILE *file_ptr;
file_ptr = fopen("filename.txt", "r");

注意:我们将文件指针定义为文件的返回值。该函数有两个参数。 个参数是我们要打开的文件名称,而第二个参数表示文件的打开模式。"r"表示只读模式。

3. 使用循环逐行读取文件的数据并存储到二维数组中:

int i, j;
for (i = 0; i < ROWS; i++) {
    for (j = 0; j < COLS; j++) {
        fscanf(file_ptr, "%d ", &array[i][j]);
    }
}

注意:我们使用了两个嵌套循环来读取文件的每一行,并使用fscanf函数将当前读取的整数存储到数组的相应位置。

4. 关闭文件:

fclose(file_ptr);

5. 处理文件读取可能遇到的错误。这里我们可以使用ferror函数检查文件是否存在问题:

if (ferror(file_ptr)) {
    printf("Error while reading from file.
");
}

完整的代码如下:

#include <stdio.h>
#include <stdlib.h>

#define ROWS 10
#define COLS 20

int main() {
    int array[ROWS][COLS];
    FILE *file_ptr;
    int i, j;
    file_ptr = fopen("filename.txt", "r");
    if (file_ptr == NULL) {
        printf("Error opening file.
");
        exit(1);
    }
    for (i = 0; i < ROWS; i++) {
        for (j = 0; j < COLS; j++) {
            fscanf(file_ptr, "%d ", &array[i][j]);
        }
    }
    if (ferror(file_ptr)) {
        printf("Error while reading from file.
");
    }
    fclose(file_ptr);
    return 0;
}

以上就是使用C语言从txt文件中读取二维数组的方法,标准库中还有其他函数可以实现相同的操作,但在大多数情况下,使用fscanf函数是最常见的方法。