O que esta errado neste codigo de registro?
include <stdio.h>
#include <conio.h>
#include <string.h>
main()
{
struct func {
char nome;
float salario;
};
struct func F[10];
float maior_sal;
char maior_nome;
int q1000, q2500, i;
q1000 = 0;
q2500 = 0;
maior_sal = 0;
for (i=0; i<4; i++){
printf ("Digite o nome do funcionario= ");
scanf ("%s", &F[i].nome);
printf ("Digite o salario deste funcionario= ");
scanf ("%f", &F[i].salario);
if (F[i].salario < 1000){
q1000 += 1;
}
if (F[i].salario > 2500 && F[i].salario < 5000){
q2500 += 1;
}
if (F[i].salario > maior_sal){
maior_sal = F[i].salario;
maior_nome = F[i].nome;
}
}
printf ("\nExistem %d funcionarios que recebem menos de R$ 1000", q1000);
printf ("\nExistem %d funcionarios que recebem entre 2500 R$ e 5000 R$\n", q1000);
printf ("O funcionario %s recebe o maior salario da empresa de %f", maior_nome, maior_sal);
getch();
return 0;
}
Comments
Repare que você declarou a variável nome como sendo um único caractere e não uma string.
Tente:
struct func {
char nome[30];
float salario;
};
Repare também que ao utilizar o scanf("%s", F[i].nome) o nome informado não pode conter espaços (pois ele sinaliza o fim da string para a função scanf). Tente utilizar gets, ou melhor, fgets.
Para copiar uma string você precisa utilizar a função strcpy da biblioteca string.h. (ao utilizar o operador de atribuição você estará atribuindo o endereço da string e não seu conteúdo)
Num sei