Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- struct cliente
- {
- char nome[80];
- char end[80];
- char cidade[40];
- char estado[40];
- char cep[20];
- // restante da estrutura
- };
- int main()
- {
- int i, j, n, op;
- char buff[100];
- struct cliente cli[100];
- i=0;
- printf ("Quantos clientes deseja cadastrar? ");
- fgets(buff,100,stdin);//le um maximo possivel(razoavel) ate o enter
- sscanf(buff, "%3d", &n);//filtra a quantidade e tipo de caracteres desejados
- do{
- //nao existe cls no os x pode usar clear, mas precisa resolver o PAUSE primeiro
- //system("clear"); //para usar no OS X (nao funciona dentro do XCODE)
- //system ("cls"); // Tem a mesma funcao do clrscr() - Limpa tela
- printf("=====================================\n");
- printf("\n\n1 - Criar cadastro\n");
- printf("2 - Mostrar cadastro\n");
- printf("3 - Gravar cadastro em arquivo\n");
- printf("4 - Encerrar o programa\n\n");
- printf("\nEscolha uma opcao: ");
- fflush(stdin);//não é obrigatorio, mas quando suportado, limpara o que sobrou na entrada
- //SEMPRE deve-se evitar depender do fflush para uma entrada correta
- //pois ele nem sempre é suportado(acho que no OS X nao funciona, por exemplo)
- fgets(buff,100,stdin);
- sscanf(buff, "%1d", &op);
- printf("=====================================\n");
- switch (op) {
- case 1: { // Caso se deseje cadastrar cliente
- if (i==n) {
- printf("\nJa cadastrou todos os clientes possiveis!\n\n");
- //system("PAUSE"); //nao eh suportado no os x
- //a unica maneira decente de contornar isso
- //eh usando a biblioteca iostream:
- //std::cin.ignore();
- }
- else {
- printf("\n=====================================\n");
- printf("Dados do cliente %d : \n", i+1);
- printf("=====================================\n");
- printf("Nome: ");
- fflush(stdin);
- fgets(buff,100,stdin);
- sscanf(buff, "%79c", &cli[i].nome);//limita-se (tam-1) caracteres pois o ultimo eh caractere nulo
- printf("Endereco: ");
- fflush(stdin);
- fgets(buff,100,stdin);
- sscanf(buff, "%79c", &cli[i].end);
- printf("Cidade: ");
- fflush(stdin);
- fgets(buff,100,stdin);
- sscanf(buff, "%39c", &cli[i].cidade);
- printf("Estado: ");
- fflush(stdin);
- fgets(buff,100,stdin);
- sscanf(buff, "%39c", &cli[i].estado);
- printf("CEP: ");
- fflush(stdin);
- fgets(buff,100,stdin);
- sscanf(buff, "%19c", &cli[i].cep);
- printf("=====================================\n\n");
- i=i+1;
- printf("Pode-se cadastrar mais %d clientes!\n\n", n-i);
- //system("PAUSE");
- };
- break;
- } //case 1
- case 2: { // Mostra a ultima situacao do cadastro de clientes
- if (i!=0)
- for (j=0; j<i; j++) {
- printf("\n=====================================\n");
- printf("Dados cliente %d : \n",j+1);
- printf("=====================================\n");
- printf("Nome: %s\n",cli[j].nome);
- printf("Endereco: %s\n",cli[j].end);
- printf("Cidade: %s\n",cli[j].cidade);
- printf("Estado: %s\n",cli[j].estado);
- printf("CEP: %s\n\n",cli[j].cep);
- printf("=====================================\n\n");
- }
- else
- printf("Nao ha clientes cadastrados!\n\n");
- //system("PAUSE");
- break;
- } //case 2
- case 3: { // Grava arquivo com ultima atualizaÁ„o dos clientes
- FILE *ptrARQ; //cria um ponteiro para um arquivo
- // Testa se eh possivel abrir o arquivo
- if ((ptrARQ = fopen("RQCLI.DAT","w"))==NULL)
- printf("\n\nNao foi possivel criar o arquivo!\n\n");
- else
- if (i!=0) {
- for (j=0; j<i; j++) {
- fprintf(ptrARQ, "\n=====================================\n");
- fprintf(ptrARQ, "Dados cliente %d : \n",j+1);
- fprintf(ptrARQ, "=====================================\n");
- fprintf(ptrARQ, "Nome: %s\n",cli[j].nome);
- fprintf(ptrARQ, "Endereco: %s\n",cli[j].end);
- fprintf(ptrARQ, "Cidade: %s\n",cli[j].cidade);
- fprintf(ptrARQ, "Estado: %s\n",cli[j].estado);
- fprintf(ptrARQ, "CEP: %s\n\n",cli[j].cep);
- fprintf(ptrARQ, "=====================================\n\n");
- }
- fclose(ptrARQ);//fecha o arquivo criado
- printf("\n\n\n Gravando arquivo...Operacao concluida com sucesso\n\n");
- }
- else {
- printf("Nao ha clientes cadastrados!\n\n");
- fclose(ptrARQ);//fecha o arquivo criado
- }
- //system("PAUSE");
- break;
- } //case 3
- case 4: { // Antes e¥ preciso gravar arquivo com ultima atualizaÁ„o dos clientes
- FILE *ptrARQ; //cria um ponteiro para um arquivo
- // Testa se eh possivel abrir o arquivo
- if ((ptrARQ = fopen("RQCLI.DAT","w"))==NULL)
- printf("\n\nNao foi possivel criar o arquivo!\n\n");
- else
- if (i!=0) {
- for (j=0; j<i; j++) {
- fprintf(ptrARQ, "\n=====================================\n");
- fprintf(ptrARQ, "Dados cliente %d : \n",j+1);
- fprintf(ptrARQ, "=====================================\n");
- fprintf(ptrARQ, "Nome: %s\n",cli[j].nome);
- fprintf(ptrARQ, "Endereco: %s\n",cli[j].end);
- fprintf(ptrARQ, "Cidade: %s\n",cli[j].cidade);
- fprintf(ptrARQ, "Estado: %s\n",cli[j].estado);
- fprintf(ptrARQ, "CEP: %s\n\n",cli[j].cep);
- fprintf(ptrARQ, "=====================================\n\n");
- }
- fclose(ptrARQ);//fecha o arquivo criado
- printf("\n\n\n Gravando arquivo...Operacao concluida com sucesso\n\n");
- }
- else {
- printf("Nao ha clientes cadastrados!\n\n");
- fclose(ptrARQ);//fecha o arquivo criado
- }
- //system("PAUSE");
- printf("\n\n FIM DA EXECUCAO!\n\n");
- } //case 4
- } // switch (op)
- } while (op != 4);
- //system("PAUSE");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement