viciado Postado Dezembro 16, 2008 Denunciar Share Postado Dezembro 16, 2008 Erro na linha 51:"incompatible types in assignment"#include <stdio.h> #include <stdlib.h> #define MAX 5 struct papelaria { int codigo; char descricao[50]; float valor; int quant; }dados[MAX]; void alterar(); int main() { int i; char tecla = 's'; for(i=0;i<MAX;i++){ printf("Digite o codigo: \n"); scanf("%d",&dados[i].codigo); printf("Digite a descricao: \n"); fgets(dados[i].descricao, 50, stdin); printf("Digite o valor unitario: \n"); scanf("%f",&dados[i].valor); printf("Digite a quantidade em estoque: \n"); scanf("%d",&dados[i].quant); } printf("Deseja alterar ?\n (s) sim (n) não"); tecla = getch(); if(tecla == 's'){ alterar(); } system("PAUSE"); return 0; } void alterar(){ int cod, i; char descricao[50]; float valor; int quant; printf("Digite nova descricao \n"); fgets(descricao, 50, stdin); printf("Digite novo valor: \n"); scanf("%f",&valor); printf("Digite nova quantidade: \n"); scanf("%d",&quant); printf("Alterar dados \n"); printf("Informa o codigo do produto a ser alterado \n"); scanf("%d",&cod); for(i=0;i<MAX;i++){ if(cod == dados[i].codigo){ dados[i].descricao = descricao; dados[i].valor = valor; dados[i].quant = quant; } else{ printf("Codigo errado \n"); } } } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Durub Postado Dezembro 16, 2008 Denunciar Share Postado Dezembro 16, 2008 Você está usando o operador igual em uma string. A forma correta de copiar é usando strcpy da string.h.strcpy(dados.descricao, descricao);Outra coisa, fica mais fácil se você informar a linha no código, com um comentário.Pois não há como ficar contando que linha é aqui. Mas em uma IDE, por exemplo, ele já mostra a linha para você.Abraços. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 viciado Postado Dezembro 16, 2008 Autor Denunciar Share Postado Dezembro 16, 2008 (editado) Não mostra erro em alguma linha, a mensagem é: undefined reference to `__cpu_features_init'#include <stdio.h> #include <stdlib.h> #define MAX 5 struct papelaria { int codigo; char descricao[50]; float valor; int quant; }dados[MAX]; void alterar(); int main() { int i; char tecla = 's'; for(i=0;i<MAX;i++){ printf("Digite o codigo: \n"); scanf("%d",&dados[i].codigo); printf("Digite a descricao: \n"); fgets(dados[i].descricao, 50, stdin); printf("Digite o valor unitario: \n"); scanf("%f",&dados[i].valor); printf("Digite a quantidade em estoque: \n"); scanf("%d",&dados[i].quant); } printf("Deseja alterar ?\n (s) sim (n) não"); tecla = getch(); if(tecla == 's'){ alterar(); } system("PAUSE"); return 0; } void alterar(){ int cod, i; char descricao[50]; float valor; int quant; printf("Digite nova descricao \n"); fgets(descricao, 50, stdin); printf("Digite novo valor: \n"); scanf("%f",&valor); printf("Digite nova quantidade: \n"); scanf("%d",&quant); printf("Alterar dados \n"); printf("Informa o codigo do produto a ser alterado \n"); scanf("%d",&cod); for(i=0;i<MAX;i++){ if(cod == dados[i].codigo){ strcpy(dados[i].descricao,descricao); dados[i].valor = valor; dados[i].quant = quant; } else{ printf("Codigo errado \n"); } } } Editado Dezembro 16, 2008 por viciado Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Beraldo Postado Dezembro 16, 2008 Denunciar Share Postado Dezembro 16, 2008 Aqui fncionouMas há um erro na função alterar().Você colocou a exibição de erro dentro do loop. Isso fará com que ele seja exibida MAX vezes se o produto não for achado e MAX - 1 se for.faça assim:int achou = 0; for(i=0;i<MAX;i++){ if(cod == dados[i].codigo){ strcpy(dados[i].descricao,descricao); dados[i].valor = valor; dados[i].quant = quant; achou = 1; } } if (!achou) { printf("Codigo errado \n"); } Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 viciado Postado Dezembro 16, 2008 Autor Denunciar Share Postado Dezembro 16, 2008 Obrigado. Meu dev enlouqueceu não compila mais nada vou usar linux mesmo Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Beraldo Postado Dezembro 16, 2008 Denunciar Share Postado Dezembro 16, 2008 talvez esteja faltando alguma biblioteca padrão, e não o Dev que parou de funcionar.Tente reinstalá-lo Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
viciado
Erro na linha 51:
"incompatible types in assignment"
Link para o comentário
Compartilhar em outros sites
5 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.