jonhyhvaftn 0 Posted June 5, 2013 Report Share Posted June 5, 2013 (edited) Estou a usar o seguinte codigo para ler dados de um arquivo txt FILE *prdatual = fopen("produtos.txt","r"); while(feof(prdatual) == 0){ fscanf(prdatual,"%s",&produtosAtuais); setbuf(stdin,NULL); printf("%s",produtosAtuais); } fclose(prdatual); mas ele está a fazer tudo sem paragrafos e se no %s meto %s \n ele faz paragrafo em cada letra. Como formato o texto tal e qual como ele está no .txt? Obrigado Edited June 5, 2013 by brunoais geshi Link to post Share on other sites
pmg 85 Posted June 5, 2013 Report Share Posted June 5, 2013 O conversor "%s" do fscanf() ignora espaços em branco (ENTERs, ESPAÇOs, TABs, ...). Usa a função fgets() para ler uma linha completa, incluindo o ENTER final. Além disto, o uso de feof() está errado. O feof() é usado para determinar se o último erro ocorrido para o atream se deveu ao stream não ter dados. Chamar feof() sem um erro anterior não faz sentido. Uma maneira comum de fazer um ciclo que lê um ficheiro completo, linha a linha, é while (fgets(buffer, sizeof buffer, stdin)) { /* deal with buffer */ } /* se necessario saber porque é que o fgets() falhou, faz testes no fim do loop */ if (feof(stdin)) { /* fgets() falhou por falta de dados; situacao normal */ } if (ferror(stdin)) { /* fgets() falhou por erro (bad sector; diskette removed; network down) */ } 1 Report What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código! Link to post Share on other sites
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now