Ir ao conteúdo
  • Cadastre-se
M 3

RESOLVIDO Ajuda com arquivos txt

Recommended Posts

Sou novo por aqui e queria que alguém pudesse me ajudar com o seguinte programa:

 

Eu tenho um arquivo texto com inúmeras linhas, em cada linha tenho vários números, por exemplo: linha1: [1 2 3 4 5 ], linha2: [2 4 6 8 10 ], ....

O que eu quero fazer é somar cada linha desse arquivo e escrever o resultado da soma dessas linhas do primeiro arquivo num novo arquivo. Então para o exemplo que eu citei, a resposta escrita no novo arquivo deveria ser: linha1: [15], linha2: [30].

 

Abaixo segue o que eu fiz, porém eu só consigo ler a primeira linha, pois eu criei uma variável para ler cada número. No entanto, fica inviável eu continuar a fazer isso, visto que o arquivo em questão tem 100 linhas e cada linha tem 5 números.

 

===========================================================================================================================

 

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

int main() {

    FILE *file1;
    file1 = fopen("Numeros.txt", "r");

    if(file1 == NULL) {
        printf("Arquivo nao encontrado.\n");
        system("pause");
        return 0;
    }

    int a, b, c, d, e;

    fscanf(file1, "%i %i %i %i %i", &a, &b, &c, &d, &e);
    fclose(file1);

    FILE *file2;
    file2 = fopen("Soma.txt", "w");

    fprintf(file2,"%i ", a+b+c+d+e);
    fclose(file2);

    system("pause");
    return 0;

}
 

Compartilhar este post


Link para o post
Compartilhar em outros sites

efetivamente só lê uma kkk deverias por el fscanf em um loop para ir lendo até o fin do arquivo:

#include <stdio.h>#include <stdlib.h>int main (){    FILE* entrada;    entrada = fopen("entrada.txt", "r");    if ( entrada == NULL ){        perror("Erro: ");        return 1;    }    FILE* saida;    saida = fopen("saida.txt", "w");    if ( saida == NULL ){        perror("Erro: ");        return 1;    }        int a, b, c, d, e, contador = 1;        while ( fscanf(entrada, "%i %i %i %i %i", &a, &b, &c, &d, &e) != EOF ){        fprintf(saida, "linha [%d] = %d, ", contador++, a+b+c+d+e);    }        fclose(saida);    fclose(entrada);    getchar();    return 0;}

Seu programa faz exatamente o que você lhe pediu. >_<

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sei que precisava do loop, mas não sabia como fazer. Muito obrigado, era realmente o que eu queria.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×