Ir ao conteúdo
  • Cadastre-se
fernanda_cab

C Comparar valor digitado com valor contido em arquivo txt

Posts recomendados

Olá, tudo bem? Estou tentando fazer um programa e não estou conseguindo.

O programa pede o seguinte: Ler um numero, comparar esse numero com valores ja contidos no txt, apos isso fazer a contagem e ver a quantidade de vezes que se repetem.

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que isso resolve:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <ctype.h>
#include <stdbool.h>

#define clear system("clear")   // No Windows mude de "clear" para "cls"

/**
 * Verifica se determinado arquivo existe.
 *
 * @param caminho Caminho completo para o arquivo que deve ser testado.
 * @return [T] - Existe / [F] - Não existe
 */
bool arquivoExiste(char caminho[]) {
    bool existe = false;

    FILE *file = fopen(caminho, "r");
    existe = file != NULL;

    if (existe) {
        fclose(file);
    }

    return existe;
}

/**
 * Cria o arquivo no local especificado e preenche
 * ele com 100 valores aleatórios.
 *
 * @param caminho Caminho completo onde deve ser criado o arquivo.
 */
void gerarArquivo(char *caminho) {
    FILE *file = fopen(caminho, "w");

    if (file != NULL) {
        srand(time(NULL));

        for (int i = 0; i < 100; ++i) {
            fprintf(file, "%li\n", random() % 100);
        }

        fclose(file);
    } else {
        printf("[ E ]: O arquivo '%s' não pôde ser criado. \n", caminho);
        return;
    }
}

/**
 * Executa a busca pelo número dentro do arquivo.
 *
 * @param caminho Arquivo onde deve ser procurado.
 * @param procura Número que deve ser procurado.
 * @return A quantidade de vezes que o número procurado aparece no arquivo.
 */
int procurarArquivo(char caminho[], int procura) {
    FILE *file = fopen(caminho, "r");

    if (file != NULL) {
        int ocorrencias = 0;
        char line[255];

        while (fgets(line, sizeof(line), file) != NULL) {
            if (atoi(line) == procura) {
                ocorrencias += 1;
            }
        }

        fclose(file);
        return ocorrencias;
    } else {
        printf("[ E ]: O arquivo '%s' não pôde ser aberto. \n", caminho);
        return -1;
    }
}

int main() {
    char caminho[1000] = "";
    char gerar = ' ';

    int procura = 0;
    int ocorrencias = 0;

    clear;
    printf("Caminho para o arquivo: \n");
    printf("> ");
    scanf(" %s", caminho);

    printf("\n");
    printf("Gerar o arquivo [ S / N ]: ");
    scanf(" %c", &gerar);
    gerar = toupper(gerar);

    if (gerar == 'S') {
        printf("[ I ]: Gerando o arquivo. \n");
        gerarArquivo(caminho);
    } else if (!arquivoExiste(caminho)){
        printf("[ E ]: O arquivo '%s' não existe. \n", caminho);
        return 1;
    } else {
        printf("[ I ]: Ignorando a criação do arquivo. \n");
    }

    printf("\n");
    printf("Número para procurar: ");
    scanf(" %i", &procura);
    ocorrencias = procurarArquivo(caminho, procura);

    if (ocorrencias >= 0) {
        printf("\n");
        printf("----------------------------- \n");
        printf("O valor %i aparece %i vezes. \n", procura, ocorrencias);
        printf("----------------------------- \n");
    }

    return 0;
}

 

  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Muito obrigada cara, muito bom poder contar com a galera que se dispõe a ajudar

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

×
×
  • Criar novo...

GRÁTIS: minicurso “Como ganhar dinheiro montando computadores”

Gabriel TorresGabriel Torres, fundador e editor executivo do Clube do Hardware, acaba de lançar um minicurso totalmente gratuito: "Como ganhar dinheiro montando computadores".

Você aprenderá sobre o quanto pode ganhar, como cobrar, como lidar com a concorrência, como se tornar um profissional altamente qualificado e muito mais!

Inscreva-se agora!