wrodrigounb Posted April 11, 2012 Report Share Posted April 11, 2012 a) Construção com inserção dos elementos no início da listaNeste caso, cada dado lido do arquivo é inserido no começo da lista. Dessa forma, aordem dos elementos na lista fica invertida em relação à ordem original do arquivo. A funçãorecebe como parâmetro o endereço do ponteiro pinicio, que aponta para o início da lista.#include<stdio.h> struct elemento { char dado; struct elemento *prox, *ant; }; void construir1(struct elemento **pinicio); int main void() { struct elemento *pinicio; construir1(&pinicio); return 0; } void construir1(struct elemento **pinicio) { FILE *arq; struct elemento *p1; char c; arq = fopen ("t1.txt", "r"); *pinicio = NULL; while ((c = getc (arq)) != EOF) { if (c != '\n'){ p1 = malloc (sizeof (struct elemento)); p1->dado = c; p1->prox = *pinicio; } if (*pinicio != NULL) { (*pinicio)->ant = p1; p1->ant = NULL; *pinicio = p1; } } fclose (arq); return; }Não entendo porque o compilador indica esse erro,alguém pode me ajudar?Acredito que o programa não tenha erros.W. RodrigoCiC - Universidade de Brasília Quote Link to comment Share on other sites More sharing options...
0 Paulo Jardim Posted April 11, 2012 Report Share Posted April 11, 2012 arq = fopen ("t1.txt", "r+");teste assim. Se você usar somente R ele espera que o arquivo já exista. se você coloca o + do lado, caso o arquivo nçao exista ele cria.O mesmo serve com o w, w+ Quote Link to comment Share on other sites More sharing options...
0 wrodrigounb Posted April 12, 2012 Author Report Share Posted April 12, 2012 Muito obrigado pela dica. Mas o arquivo já existia.O problema era no compilador(Dev C++), compilei no CodeBlocks e deu certo.Obrigado. Quote Link to comment Share on other sites More sharing options...
0 Paulo Jardim Posted April 12, 2012 Report Share Posted April 12, 2012 Essa questão de compilador é complicada mesmo,mas execute o código a seguir no seu Devc++ que não terá problema.#include<stdio.h> #include <stdlib.h> struct elemento { char dado; struct elemento *prox, *ant; }; void construir1(struct elemento **pinicio); int main () { struct elemento *pinicio; construir1(&pinicio); return 0; } void construir1(struct elemento **pinicio) { FILE *arq; struct elemento *p1; char c; arq = fopen ("t1.txt", "r+"); *pinicio = NULL; while ((c = getc (arq)) != EOF) { if (c != '\n'){ p1 =(struct elemento *) malloc (sizeof (struct elemento)); p1->dado = c; p1->prox = *pinicio; } if (*pinicio != NULL) { (*pinicio)->ant = p1; p1->ant = NULL; *pinicio = p1; } } fclose (arq); return; } Quote Link to comment Share on other sites More sharing options...
Question
wrodrigounb
a) Construção com inserção dos elementos no início da lista
Neste caso, cada dado lido do arquivo é inserido no começo da lista. Dessa forma, a
ordem dos elementos na lista fica invertida em relação à ordem original do arquivo. A função
recebe como parâmetro o endereço do ponteiro pinicio, que aponta para o início da lista.
Não entendo porque o compilador indica esse erro,alguém pode me ajudar?
Acredito que o programa não tenha erros.
W. Rodrigo
CiC - Universidade de Brasília
Link to comment
Share on other sites
3 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.