Tolledo
-
Posts
2 -
Cadastrado em
-
Última visita
Tipo de conteúdo
Artigos
Selos
Fabricantes
Livros
Cursos
Análises
Fórum
posts postados por Tolledo
-
-
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;
Sobre o Clube do Hardware
No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais
Direitos autorais
Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais
Nao consigo achar o erro - Arquivo e alocação dinâmica
em C/C#/C++
Postado
Obrigado Mauro!
O erro na verdade estava no uso da função fscanf, mas consegui corrigi-lo.
Obrigado pela dica do calloc no lugar do malloc, eu nao sabia a diferença entre os dois comandos ^^