gpt4 book ai didi

c - 在 C 中将文件读入二维数组

转载 作者:行者123 更新时间:2023-11-30 19:35:31 24 4
gpt4 key购买 nike

这是一个基本问题,但我的代码似乎有点问题。我试图从文本文件中读取并将完全相同的数字打印到控制台。我遇到了段错误,有人可以将我推向正确的方向吗?

基本上我想在屏幕上打印完全相同的数字(不包括“4”)。

/*
My text file simply says the following:

4 //number of rows
1 3 5 7
3 5 7 1
5 7 1 3
7 1 3 5
*/

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

int main(){

FILE *fptr = fopen("key.txt", "r");
int inputs,i,j;
int matrix[5];
fscanf(fptr, "%d", &inputs);
for(i=0; i<inputs; i++){
for(j=0; j<4; j++){
fscanf(fptr, "%d", &matrix[j]);
printf("%d ", matrix[j]);
printf("\n");
}
}



return 0;
}

最佳答案

原始代码中的问题是int matrix[5]

根据示例文本文件,您正在读取超过 5 个值。基本问题是声明一个足够大的数组来容纳您将要读取的值的数量。如何确定取决于您。

根据您的示例文本文件,考虑如下内容。

/*
My text file simply says the following:

4
1 3 5 7
3 5 7 1
5 7 1 3
7 1 3 5
*/

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

#define NCOL 4
#define MAX_ROWS 10

int main ( void )
{
FILE *fptr;
int number_rows;
int i, j;
int matrix[MAX_ROWS][NCOL];

fptr = fopen("key.txt", "r");
if ( fptr == NULL )
{
printf("Error: failed to open file key.txt\n\n");
}
else
{
fscanf(fptr, "%d", &number_rows);
if ( number_rows <= 0 )
{
printf("Error: value read for number of rows is %d\n\n", number_rows );
}
else if ( number_rows > MAX_ROWS )
{
printf("Error: value entered for number rows > MAX_ROWS\n\n");
}
else
{
for ( i = 0; i < number_rows; i++ )
{
for ( j = 0; j < NCOL; j++ )
{
fscanf(fptr, "%d", &matrix[i][j] );
}
}
}
fclose( fptr );
}

/* if the above failed because key.txt could not be read,
then we will be printing out bogus numbers below.
*/

for ( i = 0; i < number_rows; i++ )
{
for ( j = 0; j < NCOL; j++ )
{
printf("%d ", matrix[i][j]);
}
printf("\n");
}

return 0;
}

关于c - 在 C 中将文件读入二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42523023/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com