#include <stdio.h>
int main ()
{
FILE *fp;
int c;
int n = 0;
char array[10][10];
int i=0,j=0;
fp = fopen("g.txt","r");
if(fp == NULL)
{
perror("Error in opening file");
return(-1);
}
do
{
c = fgetc(fp);
if( feof(fp) )
{
break ;
}
if(c=='\n'){
array[i][j]=c;
i++;
j=0;
}
j++;
}while(1);
fclose(fp);
for(i=0;i<10;i++){
for(j=0;j<10;j++){
printf("%c ",array[i][j]);}
printf("\n"); }
return(0);
}
您好,我正在尝试从文本文件中获取矩阵(特定于字符矩阵并希望存储在动态数组中(我知道它在我的示例中不是动态的,但是知道我只是尝试在确定的矩阵中执行)。但是我的代码不能正常工作。
我试图将所有字符从矩阵放到我的数组中并确定字符是否为'\ n'然后在下一个循环中转到下一行并将init列归零。
理论上它似乎应该可行,但它打印出一堆无意义的符号,似乎无法正常工作。 我误会哪些部分?
编辑我要测试的文本文件:
Hello, I am trying to get a matrix from a text file(character matrix specifically and wants to store in dynamic ar
ray(I know it is not dynamic in
my example but for know i just try to do in determined matrix) . But my code doesn't work as it should.
它没有完全正确打印。喜欢笑打印出来,但“ul”没有。 d在新行中。(linux终端)
如何打印= http://imgur.com/a/7WYgs
答案 0 :(得分:0)
您可能需要更改此部分:
if(c=='\n'){
array[i][j] = c;
i++;
j = 0;
}
要
if(c=='\n'){
i++;
j = 0;
} else {
array[i][j] = c;
j++;
}
这意味着如果字符是新行,请移至下一行,否则将其保存在数组中。
答案 1 :(得分:0)
只有在遇到换行符时才会在数组中存储内容。
我会将循环重写为
while ((c = fgetc(fp)) != EOF)
{
if(c!='\n'){
array[i][j]=c;
j++;
}
else
{
i++;
j = 0;
}
}
fgetc在feof()AND ferror()上返回EOF,因此如果存在硬盘问题,您将不会有无限循环。