Ir para conteúdo
Fórum Script Brasil
  • 0

Duvida sobre comandos fscanf, frintf, fgets e fputs


resende

Pergunta

Olá galera sou novo no fórum e também estou começando a programar agora.

Gostaria de saber como ler strings e valores em um arquivo txt e depois imprimir

os mesmos em outro arquivo txt.

Estou tentando ler a string com fgets e imprimir com fputs mas o resultado

é um monte de caracteres ilegiveis.

Os valores estou tentando ler com fscanf e imprimir com fprintf mas o resultado

e uma mensagem dizendo que o cnteudo do arquivo não é o esperado.

Se alguém souber onde encontro um código de exemplo com esses comandos fazendo

mais ou menos o que estou tentando fazer eu agradeço muito.

Editado por resende
Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

#include <stdio.h>
#include <stdlib.h>

int main()
{
FILE *aed;
aed = fopen("c://expressoes.txt", "r");
if(aed == NULL)
    {
        printf("Falha ao abrir o arquivo!");
    }
    
    aed = fopen("c://resultados.txt", "w");
    float n1 = 0.0, n2 = 0.0, n3 = 0.0;
    char c1, c2, nome;
    int expressao1;
    fscanf(aed,"%f%c%df%c%f", n1, c1, n2, c2, n3);
    
    fprintf("%f%c%df%c%f", n1, c1, n2, c2, n3);
    fclose(aed);
    system("pause");
    return 0;
}

Como eu disse o que é imprimido no arquivo são caracteres ilegiveis.

Link para o comentário
Compartilhar em outros sites

  • 0

E ele abriu dois arquivos diferentes mas usou o mesmo ponteiro "aed". Você tem que declarar dois ponteiros FILE* diferentes, um pra cada arquivo:

...
FILE *aed, *aed2;
aed = fopen("c://expressoes.txt", "r");
if(aed == NULL)
    {
        printf("Falha ao abrir o arquivo!");
    }
aed2 = fopen("c://resultados.txt", "w");
if(aed2 == NULL)
    {
        printf("Falha ao abrir o arquivo!");
    }
    float n1 = 0.0, n2 = 0.0, n3 = 0.0;
    char c1, c2, nome;
    int expressao1;
    fscanf(aed,"%f%c%df%c%f", &n1, &c1, &n2, &c2, &n3);
    
    fprintf(aed2,"%f%c%df%c%f", n1, c1, n2, c2, n3);
    fclose(aed);
    fclose(aed2);
    system("pause");
    return 0;

Vê se dá certo, eu não compilei. Abraço.

Link para o comentário
Compartilhar em outros sites

  • 0

Você está tentando abrir o arquivo pelo bloco de notas, é isso?

Se for assim vão aparecer caracteres estranhos mesmo porque a escrita não será feita como string. Para obter os valores corretamente, você deve recuperar os valores pelo seu código (você já faz) e escrever no programa (pode usar a função printf para isso).

Se ainda assim não funcionar, tente abrir o arquivo em modo binário (acrescente um "b" ao final do modo).

Link para o comentário
Compartilhar em outros sites

  • 0

Então quer dizer que não dá para retornar o conteudo do arquivo em txt em outro arquivo txt?

A maldita da professora pediu para ler um txt com 3 expressoes matematicas, imprimi-las em outro txt e nesse outro acrescentar o resultado da expressao, ou seja ela quer que leia a expressao de um arquivo e que imprima e a resolva em outro arquivo txt...tá osso :D :angry:

Link para o comentário
Compartilhar em outros sites

  • 0

É possível gravar de forma legível em arquivos .txt, mas pra isso você terá que salvar como string (para isso pode utilizar a função fprintf, como o Ronaldo falou).

O que estou dizendo é que ao gravar números em modo binário num arquivo esse número não será 'legível' no bloco de notas.

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...