gpt4 book ai didi

c - 从文件创建 1 和 0 的矩阵 NxN 的 C 程序中的段错误

转载 作者:太空宇宙 更新时间:2023-11-04 02:59:10 26 4
gpt4 key购买 nike

我有以下问题:我有一个文件,比方说 file1.dat,其中包含以下数据:

1 2
3 1
2 1
1 3
3 2

我想用 C 编写一个程序,从这个文件中读取并在一个新文件中创建一个 NxN 矩阵,如果矩阵的第 i 个和第 j 个元素都包含在 中,则为 1 file1.dat,否则为 0。在这种情况下,我会有一个 3x3 矩阵,例如

0 1 1
1 0 0
1 1 0

我的困难是让计算机清楚地知道 file1.dat 中的数字是矩阵元素的坐标,它应该在其中放置一个 1,而在其他位置放置一个 0。

根据一位用户的建议,我尝试了以下代码:

#include <stdio.h>
#define N 131827

int main(void){
int x,y;
int matrix[N][N];
FILE *ifp = fopen("file1.dat", "r");
FILE *ofp = fopen("matrice_A_1.dat", "w");
while(fscanf(ifp, "%d %d", &x, &y) != EOF){
x--;
y--;
matrix[x][y] = 1;
}
fclose(ifp);
for(x=0; x<N; x++){
for(y=0; y<N; y++){
fprintf(ofp, "%d ", matrix[x][y]);
}
fprintf(ofp, "\n");
}
fclose(ofp);
return(0);
}

但我使用了另一个包含 131827 行(和 2 列)的 file1.dat,但它给了我一个段错误。有帮助吗?

最佳答案

可以这么简单:

// Define static matrix containing all zeroes.
const int ROWS = 3;
const int COLS = 3;
int m[ROWS][COLS] = {0};

然后阅读...

int i, j;
FILE * fp = fopen( "file1.dat", "rt" );
if( fp != NULL ) {
while( 2 == fscanf( fp, "%d%d", &i, &j ) {
if( i < 1 || i > ROWS || j < 1 || j > COLS ) {
printf( "Bad address: %d, %d\n", i, j );
continue;
}
m[i-1][j-1] = 1;
}
fclose(fp);
}

关于c - 从文件创建 1 和 0 的矩阵 NxN 的 C 程序中的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13924070/

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