121
Vývoj / Re:Načtení 2D pole v C
« kdy: 22. 11. 2022, 17:26:46 »
Tu je fix predosleho programu:
ocakam dalsie code review
matrix.c
Malo by to spracovat aj zubatu maticu, ze chybajuce prvky budu nuly
ocakam dalsie code review

matrix.c
Kód: [Vybrat]
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_ROWS 100
#define MAX_COLS 100
#define MAX_LINE_LENGTH 256
int main()
{
FILE *fp;
char data_line[MAX_LINE_LENGTH];
char *matrix_element;
int i, j, max_i, max_j;
int matrix[MAX_ROWS][MAX_COLS] = { 0 };
fp = fopen("matrix.dat","r");
printf("Reading data from the file:\n\n");
max_j = 0;
i = 0;
while (fgets(data_line, MAX_LINE_LENGTH, fp) != NULL) {
// Remove trailing \n
data_line[strcspn(data_line, "\n")] = 0;
// split line into matrix elements
matrix_element = strtok(data_line, ",;\t ");
j = 0;
while(matrix_element != NULL) {
printf("%s ", matrix_element);
// populate matrix
if ((i < MAX_ROWS) && (j < MAX_COLS)) {
matrix[i][j] = atoi(matrix_element);
}
j++;
if (max_j < j) max_j = j;
matrix_element = strtok(NULL, ",;\t ");
}
printf("\n");
i++;
}
max_i = i;
fclose(fp);
printf("..Done.\n\n");
printf("Datafile contains %d rows and %d columns\n\n", max_i, max_j);
// eventually, adapt maximum indexes to the size of the matrix
if (max_i > MAX_ROWS) {
printf("WARNING: matrix contains only %d rows of %d data rows from the file\n",
MAX_ROWS, max_i);
max_i = MAX_ROWS;
}
if (max_j > MAX_COLS) {
printf("WARNING: matrix contains only %d columns of %d data columns from the file\n",
MAX_COLS, max_j);
max_j = MAX_COLS;
}
// now print the matrix
printf("\nThe matrix is:\n\n");
for (i = 0; i < max_i; i++) {
for (j = 0; j < max_j; j++) {
printf("%d\t", matrix[i][j]);
}
printf("\n");
}
return 0;
}
Malo by to spracovat aj zubatu maticu, ze chybajuce prvky budu nuly
Kód: [Vybrat]
1 2
5 6 7 8
