Estou começando a digitar um código, porém, a parte inicial dele não está funcionando bem.
Resumindo o que eu queria dessa parte inicial:
O programa iniciaria e o usuario deve inserir o nome e o formato do arquivo a ser aberto (Nesse caso, uma imagem PPM)
Em seguida, seriam lidas as 3 informações iniciais do arquivo
"P3
400 300"
Onde P3 é o tipo do arquivo e 400 300 é o numero de colunas e linhas
Depois disso, com alocação dinamica, seria criada uma matriz para armazenar as 400 colunas e 300 linhas de valores. Por fim, coloquei um printf com a matriz para ver se os valores seriam exibidos corretamente.
O problema que, apos verificar que o arquivo possui 400 colunas e 300 linhas, o programa para de responder e é finalizado automaticamente.
Vocês poderiam me ajudar a encontrar o erro no codigo?
Muito obrigado.
O código é o seguinte:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void Ler_Imagem (int Col, int Lin, int ***v)
{
int i, j;
char nome[50], Tipo[2];
FILE *inFile;
printf("Insira o nome da imagem e seu formato:\n");
scanf("%s", &nome);
inFile = fopen(nome, "r");
if (inFile == NULL){
printf("Erro ao abrir arquivo.\n");
exit(1);
}
else {
printf("O programa foi aberto com sucesso!\n");
}
fscanf(inFile, "%s %d %d", &Tipo, &Col, &Lin);
printf("O Numero de linhas e colunas da imagem e: %d colunas e %d linhas\n", Col, Lin);
v = (int *) malloc (Lin * sizeof(int *));
for (i=0; i < Lin; i++){
v = (int *) malloc (Col * sizeof(int ));
}
for (i = 0; i < (Lin + 4); i++)
{
for (j = 0; j < Col; j++)
{
if (i >= 4){
fscanf(nome, "%d", &v[(i-4)][j]);
}
}
}
for (i = 0; i < (Lin + 4); i++)
{
for (j = 0; j < Col; j++)
{
printf("%d", *v[(i)][j]);
}
}
}
int main()
{
int NumCol, NumLin;
int **v;
NumCol = 0; NumLin = 0;
Ler_Imagem(NumCol, NumLin, &v);
return 0;