gpt4 book ai didi

c - 将矩阵文本文件读入c中的数组

转载 作者:太空宇宙 更新时间:2023-11-04 04:31:13 24 4
gpt4 key购买 nike

我已经开始学习用 C 编写代码,但我被困在一项作业中,我应该读取文件,将内容放入矩阵,最后打印矩阵。

输入文件包含:

    ------01-1
1--------1
--0-1-----
----0-----
------0--1
-----1--1-
------0--0
0---------
--11-----1
0-1-----0-

这是我到目前为止编写的代码:

int main()
{
FILE *filename = fopen("file.txt","r");
int matrix[10][10];
int c;

for(int i =0; i < 10; i++)
{
for(int j=0; j<10; j++)
{
c = fgetc(filename);
if(c == '1')
{
matrix[i][j] = 1;
}
else if(c == '0')
{
matrix[i][j] = 0;
}
}
}

for(int a = 0; a < 10; a++)
{
for(int b = 0; b < 10; b++)
{
printf("%d", matrix[a][b]);
}
printf("\n");
}

}

输出:

-520092443803-520092443-12480181
2686620131463841127199806539638031616085
1316435226866683164344001-520092443011
51119868016113146336314633624404833019927382943080192
26869241998418816-1123324798-2268660019980688424308334426866161992765860
0019927658711830833442686648199276586030801920
1-8756571168119980461561998099927-13626866284
0175821461101992769785308335604200816026866681992735205
199343520826867321992749998819927700401992769850-875656752419907241990720
11268674426869241992847904-1121896548-2119927710210

Press any key to continue.

我对输出的猜测是它没有将 c 值添加到矩阵中。所以它打印了一个“空”数组;空数组导致奇怪的数字?

我知道我正在从文本文件中读取字符。所以我需要将它们转换为 int 值。

但是我的代码为什么会出错,哪里出错了?

最佳答案

初始化矩阵

int matrix[10][10] = {0};

处理0和1以外的输入

我们还需要处理什么:

  1. 连字符或 - 输入:保存一些其他数字,例如:2 或 -1
  2. EOF or end of file:结束程序或类似处理
  3. 新行、尾随空格或其他未知字符:忽略该字符并重新阅读
c = fgetc(filename);
if(c == '1')
{
matrix[i][j] = 1;
}
else if(c == '0')
{
matrix[i][j] = 0;
}
else if(c == '-')
{
matrix[i][j] = -1; /* Special number for - */
}
else if(c == EOF)
{
return -1; /* End of file handling */
}
else
{
--j; /* Ignore this character and enter into loop again */
/* Although modifying loop controlling var inside is not a good habit */
/* For this small module, it should be fine */
}

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

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