Ir ao conteúdo
  • Cadastre-se

C Comparar valor digitado com valor contido em arquivo txt


Posts recomendados

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
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário 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 comunidades 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...