Aqui está um exemplo de um sistema de cadastro utilizando arquivos. Nele
podemos inserir e pesquisar por um cadastro. A pesquisa pelo cadastro é
feita informando o nome. Esse nome precisa ser exatamente igual ao nome
que poderá ser encontrado no arquivo, pois o sistema é "case sensitive".
Se quiserem podem tirar usando toupper ou tolower, mas não
me dei ao trabalho. Aqui está o código comentado:
#include <stdio.h>
#include <string.h>
#include <stdlib.h> //necessário somente pro system :(
//TAM_MAX é o tamanho máximo pro vetor de nomes
#define TAM_MAX 30
void insere(char nome[TAM_MAX], int idade)
{
FILE *fd; // declaração de um ponteiro do tipo arquivo
fd = fopen("teste123","a"); //abre o arquivo(teste123) como anexação
fprintf(fd, "%s\n", nome); //escreve nome numa linha de fd
fprintf(fd, "%d\n", idade);//escreve idade na linha seguinte
fprintf(stdout, "\nNome %s de Idade %d inserido!\n", nome, idade); //escreve na tela
fclose(fd); //fecha o arquivo
getchar(); getchar();
//limpa o buffer e espera o usuario pressionar uma tecla
}
void pesquisa(char pesq[])
{
FILE *fd; //declara fd do tipo arquivo, poderia ser global né?
char linha[TAM_MAX];
int idade, checa=0;
fd = fopen("teste123","r"); //abre o arquivo
//enquanto não chegar no final do arquivo pega a linha do arquivo e
//coloca na variavel "linha". Depois passa pro if...
while ((fscanf(fd,"%s", linha))!=EOF)
if (!strcmp(linha, pesq)) //checa-se as 2 strings sao iguais
{
printf("\nNome: %s", linha);
fscanf(fd,"\n%d", &idade);//pula uma linha e pega a idade
printf("\nIdade: %d", idade);
fscanf(fd,"\n"); //posiciona cursor na próxima linha
checa=1;
}
else
fscanf(fd,"\n\n"); //se nome não for o procurado, pula pra 2ª linha depois da atual
if (checa==0) printf("Cadastro inexistente!\n");
getchar(); getchar(); //espera o usuario teclar algo
fclose(fd); //fecha arquivo
}
int main(void)
{
int op,idade;
char nome[TAM_MAX];
//aqui é uma espécie de menuzinho
while (op!=3)
{
system("clear"); //limpar tela
printf("1 -> Insere\n");
printf("2 -> Pesquisa\n");
printf("3 -> Sair\n\n");
printf("Digite a opção: ");
scanf(" %d", &op);
switch (op)
{
case 1: {
printf("Digite o nome: ");
scanf("%s", nome);
printf("Digite a idade: ");
scanf(" %d", &idade);
insere(nome, idade);
} break;
case 2: {
printf("Digite o nome a pesquisar: ");
scanf(" %s", nome);
pesquisa(nome);
} break;
case 3: break;
default: {
printf("Opção invalida!");
getchar(); getchar();
};
}
}
return(0);
}