wrodrigounb Postado Abril 11, 2012 Denunciar Share Postado Abril 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Paulo Jardim Postado Abril 11, 2012 Denunciar Share Postado Abril 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+ Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 wrodrigounb Postado Abril 12, 2012 Autor Denunciar Share Postado Abril 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Paulo Jardim Postado Abril 12, 2012 Denunciar Share Postado Abril 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; } Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
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 para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.