onde esta o erro?

onde esta o erro?

by Esther Sobrinho -
Number of replies: 1

int read_pgm (char fname[], int M[][MAX], int *m, int *n, int *maxval)
{
    FILE *arq;
    char key[128];
    int aux, i, j;
    printf("Digite o nome do arquivo de entrada: ");
    scanf("%s", fname);
    arq=fopen(fname, "r");
    if (arq==NULL){
        printf("Erro na abertura de arquivo %s\n", *fname);
        return 1;
    }
    aux=fscanf(arq, "%s", key);
    if (aux!=1) {
        printf("Erro na leitura do arquivo %s\n", *fname);
        fclose(arq);
        return 1;
    }
    if (strcmp(key, "P2") != 0){
        printf("Formato desconhecido\n");
        fclose(arq);
        return 1;
    }
    printf("\n\nLendo dimensões\n\n");
    aux=fscanf(arq, "%d %d %d ", &m, &n, &maxval);
    if (aux != 3) {
        printf("Formato incorreto\n");
        fclose(arq);
        return 1;
    }
    printf("\n\nDimensões lidas. m=%d n=%d maxval=%d\n\nLendo Matriz\n\n", m, n, maxval);
    for(i=0; i<*m; i++){
        for (j=0; j<*n; j++){
            fscanf (arq, "%d ", &M[i][j]);
            printf ("%d ", M[i][j]);
            }
        printf ("\n");
        }
    printf("\n\nMatriz lida.\n\n");
    fclose (arq);
    return 0;
}

a funçao é lida apenas ate "Lendo Matriz" e da uma mensagem de erro p/ enviar relatotia p/ microfoft!!

In reply to Esther Sobrinho

Re: onde esta o erro?

by Francisco Reverbel -
Na parte

    printf("\n\nLendo dimensões\n\n");
    aux=fscanf(arq, "%d %d %d ", &m, &n, &maxval);

você não deve usar o '&' antes de m, n e maxval, pois esses parâmetros já são ponteiros! Veja como m, n e maxval foram declarados, no cabeçalho da função read_pgm.