fiz uma função de alterar um arquivo e quando executo-a apenas alguns campos alteram,
segue o código para análise:
switch(Opcao)
{
case 0: printf("\n\n\tFim de Alteracao."); break;
case 1: printf("\n\n\tDigite a Nova Marca:\n\t-> ");
gets(Dados.Marca); fflush(stdin); /* Lendo Nova Marca */
strcpy(Veic.Marca,Dados.Marca); break;
case 2: printf("\n\n\tDigite o Novo Modelo:\n\t-> ");
gets(Dados.Modelo); fflush(stdin); /* Lendo Novo Modelo */
strcpy(Veic.Modelo,Dados.Modelo); break;
case 3: printf("\n\n\tDigite o Novo Cambio:\n\t-> ");
gets(Dados.Cambio); fflush(stdin); /* Lendo Novo Cambio */
strcpy(Veic.Cambio,Dados.Cambio); break;
case 4: printf("\n\n\tDigite a Nova Cor:\n\t-> ");
gets(Dados.Cor); fflush(stdin); /* Lendo Nova Cor */
strcpy(Veic.Cor,Dados.Cor); break;
case 5: printf("\n\n\tDigite o Novo Combustivel:\n\t-> ");
gets(Dados.Combu); fflush(stdin); /* Lendo Novo Combustivel */
strcpy(Veic.Combu,Dados.Combu); break;
case 6: printf("\n\n\tDigite o Novo Ano de Fabricacao:\n\t-> ");
scanf ("%d", &Veic.Ano_fabri); fflush(stdin); /* Lendo Novo Ano de Fabricacao */
Veic.Ano_fabri = Dados.Ano_fabri; break;
case 7: printf("\n\n\tDigite o Novo Ano do Modelo:\n\t-> ");
scanf ("%d", &Veic.Ano_modelo); fflush(stdin); /* Lendo Novo Modelo */
Veic.Ano_modelo = Dados.Ano_modelo; break;
case 8: printf("\n\n\tDigite o Novo Numero de Portas:\n\t-> ");
scanf ("%d", &Veic.Num_porta); fflush(stdin); /* Lendo Novo Numero de Portas */
Veic.Num_porta = Dados.Num_porta; break;
case 9: printf("\n\n\tDigite a Nova Kilometragem:\n\t-> ");
scanf ("%d", &Veic.Km); fflush(stdin); /* Lendo Nova Kilometragem */
Veic.Km = Dados.Km; break;
case 10:printf("\n\n\tDigite o Novo numero da Placa:\n\t-> ");
scanf ("%d", &Veic.Num_placa); fflush(stdin); /* Lendo Nova Placa */
Veic.Num_placa = Dados.Num_placa; break;
case 11:printf("\n\n\tDigite o Numero do Novo Chassi:\n\t-> ");
scanf ("%d", &Veic.Num_chassi); fflush(stdin); /* Lendo Novo Chassi */
Veic.Num_chassi = Dados.Num_chassi; break;
case 12:printf("\n\n\tDigite o Novo preço de Custo:\n\t-> ");
scanf ("%f", &Veic.Preco_custo); fflush(stdin); /* Lendo Novo preço de Custo */
Veic.Preco_custo = Dados.Preco_custo; break;
case 13:printf("\n\n\tDigite o Novo preço de Venda:\n\t-> ");
scanf ("%f", &Veic.Preco_venda); fflush(stdin); /* Lendo Novo preço de Venda */
Veic.Preco_venda = Dados.Preco_venda; break;
}/*.....Fim switch......*/
Obs1: até o Case 5, que tem os comandos strcpy, os campos alteram legal, nos demais Case 6 ao Case 13, que estão em vermelho não!!??
Obs2: Quando faço o DEBUG e o cursor para no campo para entrar com o novo valor, este campo simplesmente não me dixa digitar o valor, ou seja, fica bloqueado e não consigo digitar nada????
O que ocorreu foi o seguinte:
Todos os campos estavam com o comando strcpy, mas o compilador acusava erro devido aos campos do case 6 ao case 13 serem long int e float, o comando strcpy não aceita campos assim!!então troquei o strcpy simplesmente atribuindo um campo sendo igual ao outro. O que poderia estar havendo, será que terei q deixar todos os campos definidos como char, para poder usar o strcpy??
Lembrando que a função funciona, pois os 5 primeiros cases, fazem a alteração normalmente!!
Pergunta
Minduca
Olá a todos,
fiz uma função de alterar um arquivo e quando executo-a apenas alguns campos alteram,
segue o código para análise:
switch(Opcao)
{
case 0: printf("\n\n\tFim de Alteracao."); break;
case 1: printf("\n\n\tDigite a Nova Marca:\n\t-> ");
gets(Dados.Marca); fflush(stdin); /* Lendo Nova Marca */
strcpy(Veic.Marca,Dados.Marca); break;
case 2: printf("\n\n\tDigite o Novo Modelo:\n\t-> ");
gets(Dados.Modelo); fflush(stdin); /* Lendo Novo Modelo */
strcpy(Veic.Modelo,Dados.Modelo); break;
case 3: printf("\n\n\tDigite o Novo Cambio:\n\t-> ");
gets(Dados.Cambio); fflush(stdin); /* Lendo Novo Cambio */
strcpy(Veic.Cambio,Dados.Cambio); break;
case 4: printf("\n\n\tDigite a Nova Cor:\n\t-> ");
gets(Dados.Cor); fflush(stdin); /* Lendo Nova Cor */
strcpy(Veic.Cor,Dados.Cor); break;
case 5: printf("\n\n\tDigite o Novo Combustivel:\n\t-> ");
gets(Dados.Combu); fflush(stdin); /* Lendo Novo Combustivel */
strcpy(Veic.Combu,Dados.Combu); break;
case 6: printf("\n\n\tDigite o Novo Ano de Fabricacao:\n\t-> ");
scanf ("%d", &Veic.Ano_fabri); fflush(stdin); /* Lendo Novo Ano de Fabricacao */
Veic.Ano_fabri = Dados.Ano_fabri; break;
case 7: printf("\n\n\tDigite o Novo Ano do Modelo:\n\t-> ");
scanf ("%d", &Veic.Ano_modelo); fflush(stdin); /* Lendo Novo Modelo */
Veic.Ano_modelo = Dados.Ano_modelo; break;
case 8: printf("\n\n\tDigite o Novo Numero de Portas:\n\t-> ");
scanf ("%d", &Veic.Num_porta); fflush(stdin); /* Lendo Novo Numero de Portas */
Veic.Num_porta = Dados.Num_porta; break;
case 9: printf("\n\n\tDigite a Nova Kilometragem:\n\t-> ");
scanf ("%d", &Veic.Km); fflush(stdin); /* Lendo Nova Kilometragem */
Veic.Km = Dados.Km; break;
case 10:printf("\n\n\tDigite o Novo numero da Placa:\n\t-> ");
scanf ("%d", &Veic.Num_placa); fflush(stdin); /* Lendo Nova Placa */
Veic.Num_placa = Dados.Num_placa; break;
case 11:printf("\n\n\tDigite o Numero do Novo Chassi:\n\t-> ");
scanf ("%d", &Veic.Num_chassi); fflush(stdin); /* Lendo Novo Chassi */
Veic.Num_chassi = Dados.Num_chassi; break;
case 12:printf("\n\n\tDigite o Novo preço de Custo:\n\t-> ");
scanf ("%f", &Veic.Preco_custo); fflush(stdin); /* Lendo Novo preço de Custo */
Veic.Preco_custo = Dados.Preco_custo; break;
case 13:printf("\n\n\tDigite o Novo preço de Venda:\n\t-> ");
scanf ("%f", &Veic.Preco_venda); fflush(stdin); /* Lendo Novo preço de Venda */
Veic.Preco_venda = Dados.Preco_venda; break;
}/*.....Fim switch......*/
Obs1: até o Case 5, que tem os comandos strcpy, os campos alteram legal, nos demais Case 6 ao Case 13, que estão em vermelho não!!??
Obs2: Quando faço o DEBUG e o cursor para no campo para entrar com o novo valor, este campo simplesmente não me dixa digitar o valor, ou seja, fica bloqueado e não consigo digitar nada????
O que ocorreu foi o seguinte:
Todos os campos estavam com o comando strcpy, mas o compilador acusava erro devido aos campos do case 6 ao case 13 serem long int e float, o comando strcpy não aceita campos assim!!então troquei o strcpy simplesmente atribuindo um campo sendo igual ao outro. O que poderia estar havendo, será que terei q deixar todos os campos definidos como char, para poder usar o strcpy??
Lembrando que a função funciona, pois os 5 primeiros cases, fazem a alteração normalmente!!
Se puderem ajudar, já agradeço.
Minduca
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.