У меня есть текстовый файл с произвольными буквами в строках и столбцах. Все, что я хотел бы сделать, это сделать массив 2d, так что это puzzle[i][j]
, где, если бы я положил printf("%c", puzzle[5][4]);
, он просто дал бы мне символ 4-й строки и 3-го столбца (так как он начинается с 0 в массиве). Вот мой код до сих пор.Чтение текстового файла в 2d-массив
#define MAXROWS 60
#define MAXCOLS 60
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <math.h>
main()
{
FILE *TableFilePtr;
char TableFileName[100];
char PuzzleFileName[100];
char puzzle[MAXROWS][MAXCOLS];
printf("Please enter the table file name: ");
scanf("%s",TableFileName);
TableFilePtr=fopen(TableFileName, "r");
if(TableFilePtr == NULL)
{
printf("Can't open %s", TableFileName);
exit(EXIT_FAILURE);
}
char words;
int n;
n=0;
int i,j,row,col;
int rowcount, colcount;
printf("\n how many rows and colums are there? separate by a space: ");
scanf("%d %d",&row, &col);
/* while(fscanf(TableFilePtr,"%c",&words)!= EOF)
{
printf("%c",words);
}
*/
/*for (colcount=0;colcount<col;colcount++)
{
for (rowcount=0;rowcount<row;rowcount++)
{
printf("%c ",words);
}
printf("\n");
}
*/
for(i=0;i<row;i++){
for(j=0;j<col;j++){
fscanf(TableFilePtr, "%c %s\n",&puzzle[i]][j]);
//puzzle[i][j]=words;
// printf("%c ", puzzle[i][j]);
}
printf("\n");
}
}
Закомментированная область в конце (только начальная часть) работает просто распечатать текстовый файл в компиляторе. Я бы хотел, чтобы это было в 2d массиве.
for(colcount=0;colcount<col;colcount++){...}
Uve перепутал ваше понимание индексов массива, было ли это опечаткой? –
Обратите внимание, что 'puzzle [5] [4]' печатает значение в шестой строке и пятом столбце, а не в четвертой строке и третьем столбце - именно потому, что индексация начинается с 0. –