1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

Duvida em c

Discussão em 'Programação' iniciada por pjgo, 14 de Junho de 2008. (Respostas: 0; Visualizações: 455)

  1. Estou com umas duvidas num codigo de c. Tenho um programa que insere dados numa lista ligado que depois vao ser guardados num ficheiros binario. Ate ai tudo bem. Mas depois de guardados queria saber como alterar um campo de um registo e grava-lo por cima do antigo. Ja tentei varias solucoes mas nenhuma resultou.
    A funcao e a seguinte:
    Código:
    void alterar_restaurante()
    {
         int alterar; 
         int op;
         if(head==NULL)
         {
            printf("sem registos\n");
            return;
         }
         struct restaurantes *add= (struct restaurantes*)malloc(sizeof (struct restaurantes));   
         add -> seguinte = NULL;
         struct restaurantes *restaurante=head;
         
         printf("Introduza o codigo do restaurante a alterar \n  ");
         scanf("%d",&alterar);
         while(restaurante!=NULL)
         {   
           if (alterar == restaurante->codigo)
           {
               printf("Restaurante encontrado. O que deseja alterar: \n");
               printf("1-Nome\n");
               printf("2-Localidade\n");
               printf("3-rua\n");
               printf("4-Codigo Postal\n");
               printf("5-Tipo comida:\n");
               printf("6-Dia de Folga:%d\n");
               printf("7-Numero telefone:%d\n");
               printf("8-Inicio do periodo de ferias:\n");
               printf("9-Fim do periodo de ferias:\n");
               printf("10-Observacoes:\n");
               printf("11-Telefone \n");
               printf("12-Sair \n");
               
               do{
               scanf("%d",&op);
               }while ((op<1) || (op>12));
               switch(op)
               {case 1:
                     
                     printf("Nome: ");
                  scanf(" %25[^\f\n\r\t\v]s",&add -> nome);
         
                     if(add-> nome == "")
                         printf("Nao introduziu nome. Introduza um nome:\n");
                     else
                         break;
                                      
               case 2:
                    printf("Localidade: ");
                 scanf(" %25[^\f\n\r\t\v]s",&add -> localidade);
     
                    if(add-> localidade == "")
                        printf("Nao introduziu localidade. Introduza uma localidade:\n");
                    else
                        break;
                    
               case 3:
                    printf("\nRua: ");
                 scanf(" %25[^\f\n\r\t\v]s",&add -> rua );
       
                    if(add-> rua == "")
                        printf("Nao introduziu rua. Introduza uma rua:\n");
                    else
                        break;
                    
               case 4:
                    printf("Codigo Postal: ");            //verificacao da validade do codigo postal
                 scanf("%d",&add -> codpostal);
         
                 if(add->codpostal<0)
                        printf("Codigo de postal invalido.\n");
                    else
                        break;           
                    
               case 5:
                    printf("E-mail: ");
                 scanf(" %25s",&add -> email);
         
                 if(add-> localidade == "")
                        printf("Nao introduziu email. Introduza um email:\n");
                    else
                        break;
               
               case 6:
                    printf("Tipo Comida : ");
                 scanf(" %20s",&add -> tipo_comida);
         
                 if(add-> tipo_comida == "")
                        printf("Nao introduziu o tipo de comida. Introduza o tipo de comida:\n");
                    else
                        break;     
                    
               case 7:
                     printf("Dia descanso: ");
                  printf("1-Domingo \n 2-Segunda \n 3-Terca \n  4-Quarta \n 5-Quinta \n 6-Sexta \n 7-Sabado"); 
            
                  scanf("%d",&add ->folga );
         
                  if(add->folga<1|| add->folga>7)
                         printf("Folga invalida.\n");
                     else
                         break;
                    
               case 8:     
                     printf("Inicio das ferias ( Dia ): ");
                  scanf("%d",&add -> dia_ferias_inicio);
         
                  if(add->dia_ferias_inicio<0 || add->dia_ferias_inicio>31)
                         printf("Epoca de ferias invalida.\n");
                     
                             
                     
                     printf("Inicio das ferias ( Mes ): ");
                  scanf("%d",&add -> mes_ferias_inicio);
         
                  if(add->mes_ferias_inicio<0 || add->mes_ferias_inicio>31)
                         printf("Epoca de ferias invalida.\n");
                     else
                         break; 
                    
               case 9:
                     printf("Fim das ferias ( Dia ): ");
                  scanf("%d",&add -> dia_ferias_fim);
         
                  if(add->dia_ferias_fim<0 || add->dia_ferias_fim>31)
                         printf("Epoca de ferias invalida.\n");
                     
                             
                     
                     printf("Fim das ferias ( Mes ): ");
                  scanf("%d",&add -> mes_ferias_fim);
         
                  if(add->mes_ferias_fim<0 || add->mes_ferias_fim>31)
                         printf("Epoca de ferias invalida.\n");
                     else
                         break;
                    
                case 10:    
                     printf("Observacoes: ");
                  scanf(" %40[^\f\n\r\t\v]s",add -> observacoes);
         
                  if(add-> observacoes == "")
                         printf("Observacoes invalidas. Introduza observacoes acerca do restaurante");
                     else
                         break;
                
                case 11:
                     printf("Telefone: ");
                  scanf("%d",&add -> telefone);
         
                  if(add->telefone>999999999 || add->telefone<100000000)
                      printf("Numero de telefone invalido.\n");
                     else
                         break;        
                    
                case 12:break;    
               }
               }while(op!=12);
               return;
            }
            restaurante=restaurante->seguinte;  
    
    }
     
    Última edição pelo moderador: 14 de Junho de 2008

Partilhar esta Página