Ir ao conteúdo
  • Cadastre-se

Tolledo

Membro Júnior
  • Posts

    2
  • Cadastrado em

  • Última visita

posts postados por Tolledo

  1. 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

×
×
  • Criar novo...