Olá, existe um fenômeno acontecendo no meu código e não consigo enxergar o motivo, se puderem me dar uma luz nisso eu agradeço kk... Estou usando o Dev C++ para compilar... Bom, a dúvida é nesse trecho do código:
int** v = (int**) malloc(sizeof(int) * 5);
for(int i = 0; i < 5; i++) {
v[i] = (int*) malloc(sizeof(int) * (10+1));
}
Quando eu compilo esse código ele executa normalmente e imprime o mapa e tudo, porém quando eu deixo de somar o 10 com o 1 no sizeof o mapa do jogo não é imprimido.. Sei que somamos o +1 por causa do \n do fscanf() e tal mas eu não consigo enxergar o caminho que o compilador faz pra não aparecer mapa quando deixamos de somar 10+1. Por quê? T.T
Outra dúvida minha, aproveitando o post, somente somamos com +1 em caso de passarmos uma string como máscara? Se for qualquer outro tipo não preciso somar com +1?
Código completo:
char mapa[5][10+1];
int linhas;
int colunas;
int main() {
FILE* f;
f = fopen("mapa.txt", "r");
if(f == 0) {
printf("Erro na leitura do mapa\n");
exit(1);
}
fscanf(f, "%d %d", &linhas, &colunas);
printf("linhas %d colunas %d\n", linhas, colunas);
int** v = (int**) malloc(sizeof(int) * 5);
for(int i = 0; i < 5; i++) {
v[i] = (int*) malloc(sizeof(int) * (10+1));
}
v[0][0] = 10;
v[1][2] = 12;
printf("inteiro alocado %d %d\n", v[0][0], v[1][2]);
for(int i = 0; i < 5; i++) {
free(v[i]);
}
free(v);
for(int i = 0; i < 5; i++) {
fscanf(f, "%s", mapa[i]);
}
for(int i = 0; i < 5; i++) {
printf("%s\n", mapa[i]);
}
fclose(f);
}