我的练习有问题,声明如下:
matriu[7][10]
的矩阵,从文件中获取数字。 此处为文件的文字:matrix.txt
1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,0 ,0 ,0 ,0 ,0 ,0 ,0 ,1 ,1 ,0 ,1 ,0 ,0 ,0 ,0 ,0 ,1 ,1 ,1 ,0 ,0 ,1 ,0 ,0 ,0 ,1 ,0 ,1 ,1 ,0 ,0 ,0 ,1 ,0 ,1 ,0 ,0 ,1 ,1 ,0 ,0 ,0 ,0 ,1 ,0 ,0 ,0 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,1 ,
以下是我做的版本,但失败了。有人可以帮我解决吗?
int main()
{
int i;
char linea[3024];
int j;
FILE* file;
file = fopen("matriu.txt", "r");
int matriu[7][10];
while (fgets(linea, sizeof(linea), file) != NULL) {
char* token;
token = strtok(linea, ",");
printf("%s\n", token);
while (token != NULL) {
token = strtok(NULL, ",");
if (token != NULL)
matriu[i][j] = atoi(token);
printf("%s\n", token);
}
}
for (i = 0; i < 7; i++) {
for (j = 0; j < 10; j++) {
printf("%d\n", matriu[i][j]);
}
}
return 0;
}
答案 0 :(得分:0)
我通过一次读取一个字符来保存矩阵。
如果扫描的字符是ActionListener
或'0'
,则我将其保存到'1'
矩阵/数组中。
否则我会扫描下一个角色。
这是我用来执行上述操作的代码:
matriu[7][10]
我希望你理解上面的代码,所以你的代码就是:
for(i=0;i<7;i++)
{
for(j=0;j<10;j++)
{
do
{
// i've declared a character ch to read each character
ch=getc(file);
}while(ch!='0' && ch!='1');
matriu[i][j]=(ch-'0');//converting char to integer
}
}
它按预期工作,最后
注意:您忘记关闭代码中的文件指针
答案 1 :(得分:-1)
#include <stdio.h>
#include <stdlib.h>
#define LINE 7
#define ROW 10
int main()
{
int i = 0, j = 0, matriu[LINE][ROW];
char letter = ' ';
FILE* file = fopen("matriu.txt", "r");
if(!(file))
{
printf("file open ERROR!\n");
return 1;
}
while(i < LINE * ROW)
{
letter = fgetc(file);
if(letter != ' ' && letter != ',')
{
*(matriu + i) = letter - 30;//because it returns the ascii code
i++;
}
}
for(i = 0; i < LINE;i++)
{
for(j = 0;j < ROW;j++)
{
printf("%d",matriu[i][j]);
}
printf("\n");
}
system("PAUSE");
return 0;
}