dimitrikx 0 Denunciar post Postado Outubro 10, 2007 Ola pessoal , estou a dias tentando fazer esta funcao e ainda nao consegui.Ja procurei no google , orkut etc.Alguem tem esta funcao para me enviar, agradeceria muito .Caso nao tenha, tentem me ajudar por favor.void listarDadosArquivo(char* nomeArq){ FILE* fp; fp = fopen(nomeArq, "rt"); char linha[121]; char c; while ( !feof(fp)) { //Poderia ter usado este comando para fazer a leitura //fscanf(fp, "%[^\n]\n", &linha); fgets(linha,120,fp); printf("%s", linha); } fclose(fp); }Esta funcao imprime tudo que esta no meu aquivo, a impressao fica assimcodigo:1nome: euidade :10codigo:2nome: eleidade:30Mas no meu programa eu quero armazenar em uma estrutura os dados lidos no arquivo texto.TENTEI ::void listarDadosArquivo(char* nomeArq){TDados * dados(TDados*)malloc(sizeof(TDados)) TLista * l; FILE* fp; fp = fopen(nomeArq, "rt"); char linha[121]; char c; while ( !feof(fp)) { //Poderia ter usado este comando para fazer a leitura fscanf(fp, "%[^\n]\n", &dados); InsereFim(l,dados) } fclose(fp); }Foi o melhor que consegui fazer , mas nao consigo pegar separadamente cada registro entao ele trava o programa.Alguem pode por favor me ajudar? Compartilhar este post Link para o post Compartilhar em outros sites
Kandrade 7 Denunciar post Postado Outubro 10, 2007 Preciso saber como é sua estrutura TDados. Tem uma sintaxe que eu usaria de outra forma: em vez de: TDados * dados(TDados*)malloc(sizeof(TDados)) TDados * dados;dados = (TDados*)malloc(sizeof(TDados)); e em vez de: fscanf(fp, "%[^\n]\n", &dados); fscanf(fp, "%[^\n]s", &dados); // aqui está o problema que tipo de dado é "dado"? Dado é um ponteiro TDados, por isso a construção está errada. Os dados lidos deve ir para algum campo dentro da estrutura TDados. Compartilhar este post Link para o post Compartilhar em outros sites