gpt4 book ai didi

c - 我的 c 代码中遇到段错误

转载 作者:行者123 更新时间:2023-11-30 14:34:58 24 4
gpt4 key购买 nike

我正在尝试逐代更新二维数组。为了做到这一点,我需要两个参数:生成号和包含二维数组的初始输入 txt。但无论我写什么,我的代码中总是存在段错误。

我正在尝试从输入文件中读取二维数组。该文件应类似于以下内容:1 1 1 0 00 0 0 0 0......

int main(int argc, char *argv[]) {
// take arguments//
char* generation;
char* filename;
if (argc < 2)
{
printf("Error\n");
exit(1);
}
else{
generation = argv[1];
filename = argv[2];
}
// read file as a 5*5 matrix//
FILE *file;
file = fopen (filename,"r");
//5*5 matrix//
int gen = atoi(generation);
int cell[5][5];
int i=0;
int j=0;
for (i=0;i<5;i++){
for (j=0;j<5;j++){
fscanf (file, "%d",&cell[i][j]);
}
}
fclose(file);

非常感谢!!!

最佳答案

在您的代码中,您没有使用变量生成,但我认为它应该用于存储矩阵维度。如果是这种情况,您总共会读取 3 个参数,因此 argc 应该是 3。

如果您正在阅读如下格式的文件:

1 2 3 4 5
6 7 8 9 10
1 1 3 4 5
6 7 8 9 0

控制台传递的参数为:./a.out维度矩阵。一个简单但不安全的代码(它不检查用户输入的尺寸)如下:

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

int main(int argc, char *argv[]) {

FILE *fp;
char *filename;
char *generation;

if (argc < 3)
{
printf("Error\n");
exit(1);
}

else {
generation = argv[1];
filename = argv[2];
fp = fopen(filename, "r");

if (fp == NULL) {
fprintf(stderr, "Error: Cannot open file %s for reading\n", filename);
exit(1);
}
}

int dim = atoi(generation);

int i, j, cell[dim][dim];

for (i = 0; i < dim; i++) {
for (j = 0; j < dim; j++) {
if (fscanf(fp, "%d ", &cell[i][j]) != 1) {
fprintf(stderr, "invalid input for cell[%d][%d]\n", i, j);
fclose(fp);
exit(1);
}
}
}

fclose(fp);

/*Print the matrix */

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

printf("\n");

return 0;
}

关于c - 我的 c 代码中遇到段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58759936/

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