我一直在尝试将矩阵输入存储在数组中的文本文件中,但它显示了我特有的输出。这是代码:
#include <stdio.h>
int main()
{
int c, i, j, row, col, nl, cr;
row = col = nl = cr = 0;
FILE *fp = fopen("g.txt", "r");
// Figure out how many rows and columns the text file has
while ((c = getc(fp)) != EOF)
{
if (c == '\n')
nl++;
if (c == '\r')
cr++;
col++;
if (c == '\n')
row++;
putchar(c);
}
col = (col - (nl + cr));
col = (int) (col/row);
// printf("\nnumber of rows is %d\n", row);
// read letters into array
char array[row][col];
if ( fp )
{
for ( ;; )
{
c = getc(fp);
if ( c == EOF )
{
break;
}
if ( c != '\n' && c != '\r' )
{
array[i][j] = c;
if ( ++j >= col )
{
j = 0;
if ( ++i >= row )
{
break;
}
}
}
}
fclose(fp);
}
for ( i = 0; i < row; i++ )
{
for ( j = 0; j < col; j++ )
{
putchar( array[i][j]);
}
putchar('\n');
}
return 0;
}
数据文件示例:
255 50 9 50 1 50 50 1
50 255 50 50 50 50 50 50
50 50 255 50 50 50 50 50
8 50 50 255 50 50 50 50
50 50 50 50 255 50 50 50
50 50 50 50 50 255 50 50
1 50 50 50 50 50 255 50
2 50 50 50 50 50 50 255
我的程序显示了这个输出:
255 50 9 50 1 50 50 1
50 255 50 50 50 50 50 50
50 50 255 50 50 50 50 50
8 50 50 255 50 50 50 50
50 50 50 50 255 50 50 50
50 50 50 50 50 255 50 50
1 50 50 50 50 50 255 50
2 50 50 50 50 50 50 255 $■( 1gÍuáþ09■ ı¤ıu"ÒávD ê$[
► ð²( ♥ l ► ■
ê$[ ♥ l ²( O»ƒv[ 4■( Qõá
v♥ #õáv┬²║Oÿ|®v ñ|®ve┬ív
■( x■( ÿ|®v Ó²⌂ @■( áƒv╚♀[ L
■( w¯ƒv‼ ê■( I┴ávÿ|®v↓┴áv~²║O
Ó²⌂ \■( ■ ─ ( e┬ívÍ┬29►☺
显示输入文件,但问题是数组输出我不明白为什么它会显示这些字符。
答案 0 :(得分:2)
char **array = malloc(sizeof(char *) * row)
每一行都像:
array[c] = malloc(sizeof(char) * col)
你必须免费释放每一行和数组。
看起来您正在尝试读取和存储整数值。请记住,当你开始工作时,你仍然需要转换字符值,如果是这样的话。
答案 1 :(得分:0)
这个怎么样: -
#include <stdio.h>
void main()
{
FILE *fopen(), *fp;
char c;
int i=0,j=0;
char file[50][50];
fp = fopen("abc.txt","r");
c = getc(fp) ;
while (c!= EOF)
{
file[i][j]=c;
j++;
c = getc(fp);
if(j==50){
i++;
j=0;
}
}
fclose(fp);
}