Olá pessoal! Eu gostaria de tirar uma dúvida sobre alocação de memória com matrizes. Para testar e fixar os conceitos vistos até agora no curso, eu escrevi um código parecido com o do instrutor. Segue o código:
#include <stdio.h>
#include <locale.h>
#include <stdlib.h>
#include <string.h>
int main(){
setlocale(LC_ALL, "");
char **str;
int line, col, length;
FILE *reader;
if((reader = fopen("teste_texto.txt", "r")) == NULL){
printf("Arquivo não encontrado.");
}
fscanf(reader, "%d %d", &line, &col);
str= malloc(sizeof(char*) * line);
for(int i = 0; i < line; i++){
str[i] = malloc(sizeof(char) * (col + 1));
length = sizeof(str[i]);
printf("%d" coluna: %d\n", i,length);
}
for(int i = 0; i < line; i++){
fgets(str[i], length, reader);
printf("%s", str[i]);
}
fclose(reader);
for(int i = 0; i < line; i++){
free(str[i]);
}
free(str);
}
O objetivo é pegar strings do arquivo teste em questão e colocá-lo em uma matriz para que possa manipulá-lo. Eu não tive lá grande sucesso e ao colocar um 'printf' no laço, percebi que ele tem invertido o número de linhas pelo de colunas, alocando mais espaço para as colunas. Por favor me digam o que estou fazendo de errado.