Advertisement
Guest User

MM Fórum - "Problema dificil !alguem pode me ajudar?" - Res

a guest
Nov 11th, 2011
44
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 8.41 KB | None | 0 0
  1.  
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5.  
  6. struct cliente
  7. {
  8.     char nome[80];
  9.     char end[80];
  10.     char cidade[40];
  11.     char estado[40];
  12.     char cep[20];
  13.     // restante da estrutura
  14.    
  15. };
  16.  
  17. int main()
  18. {
  19.    
  20.     int i, j, n, op;
  21.     char buff[100];
  22.     struct cliente cli[100];
  23.    
  24.     i=0;
  25.     printf ("Quantos clientes deseja cadastrar? ");
  26.    
  27.     fgets(buff,100,stdin);//le um maximo possivel(razoavel) ate o enter
  28.     sscanf(buff, "%3d", &n);//filtra a quantidade e tipo de caracteres desejados    
  29.    
  30.     do{
  31.         //nao existe cls no os x pode usar clear, mas precisa resolver o PAUSE primeiro
  32.         //system("clear"); //para usar no OS X (nao funciona dentro do XCODE)
  33.         //system ("cls");    // Tem a mesma funcao do clrscr() - Limpa tela
  34.        
  35.         printf("=====================================\n");
  36.        
  37.         printf("\n\n1 - Criar cadastro\n");
  38.        
  39.         printf("2 - Mostrar cadastro\n");
  40.        
  41.         printf("3 - Gravar cadastro em arquivo\n");
  42.        
  43.         printf("4 - Encerrar o programa\n\n");
  44.        
  45.         printf("\nEscolha uma opcao: ");
  46.        
  47.         fflush(stdin);//não é obrigatorio, mas quando suportado, limpara o que sobrou na entrada
  48.         //SEMPRE deve-se evitar depender do fflush para uma entrada correta
  49.         //pois ele nem sempre é suportado(acho que no OS X nao funciona, por exemplo)
  50.         fgets(buff,100,stdin);
  51.         sscanf(buff, "%1d", &op);
  52.        
  53.        
  54.         printf("=====================================\n");
  55.        
  56.        
  57.         switch (op) {
  58.             case 1: {    // Caso se deseje cadastrar cliente
  59.                 if (i==n) {
  60.                     printf("\nJa cadastrou todos os clientes possiveis!\n\n");
  61.                    
  62.                     //system("PAUSE"); //nao eh suportado no os x
  63.                     //a unica maneira decente de contornar isso
  64.                     //eh usando a biblioteca iostream:
  65.                     //std::cin.ignore();
  66.                 }
  67.                 else {
  68.                     printf("\n=====================================\n");
  69.                    
  70.                     printf("Dados do cliente %d : \n", i+1);
  71.                     printf("=====================================\n");
  72.                    
  73.                    
  74.                     printf("Nome: ");
  75.                     fflush(stdin);
  76.                     fgets(buff,100,stdin);
  77.                     sscanf(buff, "%79c", &cli[i].nome);//limita-se (tam-1) caracteres pois o ultimo eh caractere nulo
  78.                     printf("Endereco: ");
  79.                     fflush(stdin);
  80.                     fgets(buff,100,stdin);
  81.                     sscanf(buff, "%79c", &cli[i].end);
  82.                     printf("Cidade: ");
  83.                     fflush(stdin);
  84.                     fgets(buff,100,stdin);
  85.                     sscanf(buff, "%39c", &cli[i].cidade);
  86.                     printf("Estado: ");
  87.                     fflush(stdin);
  88.                     fgets(buff,100,stdin);
  89.                     sscanf(buff, "%39c", &cli[i].estado);
  90.                     printf("CEP: ");
  91.                     fflush(stdin);
  92.                     fgets(buff,100,stdin);
  93.                     sscanf(buff, "%19c", &cli[i].cep);
  94.                     printf("=====================================\n\n");
  95.                    
  96.                     i=i+1;
  97.                     printf("Pode-se cadastrar mais %d clientes!\n\n", n-i);
  98.                    
  99.                     //system("PAUSE");
  100.                 };
  101.                 break;
  102.             }    //case 1
  103.             case 2: {    // Mostra a ultima situacao do cadastro de clientes
  104.                
  105.                 if (i!=0)
  106.                     for (j=0; j<i; j++) {
  107.                         printf("\n=====================================\n");
  108.                        
  109.                         printf("Dados cliente %d : \n",j+1);
  110.                         printf("=====================================\n");
  111.                        
  112.                         printf("Nome: %s\n",cli[j].nome);
  113.                         printf("Endereco: %s\n",cli[j].end);
  114.                         printf("Cidade: %s\n",cli[j].cidade);
  115.                         printf("Estado: %s\n",cli[j].estado);
  116.                         printf("CEP: %s\n\n",cli[j].cep);
  117.                         printf("=====================================\n\n");
  118.                        
  119.                     }
  120.                 else
  121.                     printf("Nao ha clientes cadastrados!\n\n");
  122.                
  123.                 //system("PAUSE");
  124.                 break;
  125.             }   //case 2
  126.                
  127.             case 3: {    // Grava arquivo com ultima atualizaÁ„o dos clientes
  128.                
  129.                 FILE *ptrARQ; //cria um ponteiro para um arquivo
  130.                
  131.                 // Testa se eh possivel abrir o arquivo
  132.                
  133.                 if ((ptrARQ = fopen("RQCLI.DAT","w"))==NULL)
  134.                     printf("\n\nNao foi possivel criar o arquivo!\n\n");
  135.                
  136.                 else
  137.                     if (i!=0) {
  138.                         for (j=0; j<i; j++) {
  139.                             fprintf(ptrARQ, "\n=====================================\n");
  140.                            
  141.                             fprintf(ptrARQ, "Dados cliente %d : \n",j+1);
  142.                             fprintf(ptrARQ, "=====================================\n");
  143.                            
  144.                             fprintf(ptrARQ, "Nome: %s\n",cli[j].nome);
  145.                             fprintf(ptrARQ, "Endereco: %s\n",cli[j].end);
  146.                             fprintf(ptrARQ, "Cidade: %s\n",cli[j].cidade);
  147.                             fprintf(ptrARQ, "Estado: %s\n",cli[j].estado);
  148.                             fprintf(ptrARQ, "CEP: %s\n\n",cli[j].cep);
  149.                             fprintf(ptrARQ, "=====================================\n\n");
  150.                            
  151.                         }
  152.                         fclose(ptrARQ);//fecha o arquivo criado
  153.                         printf("\n\n\n Gravando arquivo...Operacao concluida com sucesso\n\n");
  154.                        
  155.                     }
  156.                     else {
  157.                         printf("Nao ha clientes cadastrados!\n\n");
  158.                        
  159.                         fclose(ptrARQ);//fecha o arquivo criado
  160.                     }
  161.                 //system("PAUSE");
  162.                 break;
  163.             } //case 3
  164.                
  165.             case 4: {    // Antes e¥ preciso gravar arquivo com ultima atualizaÁ„o dos clientes
  166.                
  167.                 FILE *ptrARQ; //cria um ponteiro para um arquivo
  168.                
  169.                 // Testa se eh possivel abrir o arquivo
  170.                
  171.                 if ((ptrARQ = fopen("RQCLI.DAT","w"))==NULL)
  172.                     printf("\n\nNao foi possivel criar o arquivo!\n\n");
  173.                
  174.                 else
  175.                     if (i!=0) {
  176.                         for (j=0; j<i; j++) {
  177.                             fprintf(ptrARQ, "\n=====================================\n");
  178.                            
  179.                             fprintf(ptrARQ, "Dados cliente %d : \n",j+1);
  180.                             fprintf(ptrARQ, "=====================================\n");
  181.                            
  182.                             fprintf(ptrARQ, "Nome: %s\n",cli[j].nome);
  183.                             fprintf(ptrARQ, "Endereco: %s\n",cli[j].end);
  184.                             fprintf(ptrARQ, "Cidade: %s\n",cli[j].cidade);
  185.                             fprintf(ptrARQ, "Estado: %s\n",cli[j].estado);
  186.                             fprintf(ptrARQ, "CEP: %s\n\n",cli[j].cep);
  187.                             fprintf(ptrARQ, "=====================================\n\n");
  188.                            
  189.                         }
  190.                         fclose(ptrARQ);//fecha o arquivo criado
  191.                         printf("\n\n\n Gravando arquivo...Operacao concluida com sucesso\n\n");
  192.                        
  193.                     }
  194.                     else {
  195.                         printf("Nao ha clientes cadastrados!\n\n");
  196.                        
  197.                         fclose(ptrARQ);//fecha o arquivo criado
  198.                     }
  199.                 //system("PAUSE");
  200.                 printf("\n\n FIM DA EXECUCAO!\n\n");
  201.                
  202.             } //case 4
  203.         } // switch (op)
  204.        
  205.     } while (op != 4);
  206.     //system("PAUSE");
  207.     return 0;
  208.    
  209. }
  210.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement