Meu jovem! Ta pronto seu codigo: #include <stdio.h>
int main () {
struct info
{
int dep;
char *name;
float inss,sal_b,sal_l;
};
struct info funcionario;
int dep;
int size=1;
char c;
float inss,sal_b,sal_l;
printf("\n Digite o nome do funcionario: ");
fflush(stdin); //limpa buffer do teclado
funcionario.name=NULL;
do {
c=getchar(); //le cada caractere por vez e o inclue na variavel c
if(!iscntrl(c)) { //testa se não for digitado enter
size++;
funcionario.name= (char *) realloc (funcionario.name, sizeof(char)*size); //aloca o vetor caractere na memora em tempo de execucao
if (funcionario.name) funcionario.name[size-2]=c; //inclue na penultima posicao
else exit(1);
}
}while (!iscntrl(c));
funcionario.name[size-1]=''; //ultima posicao da string deve ser caractere de finalizacao
printf("\n Digite o numero de dependentes do funcionario: ");
scanf("%d",&funcionario.dep);
printf("\n Digite o salário bruto do funcionario: ");
scanf("%f",&funcionario.sal_b);
if (funcionario.sal_b<=300)
funcionario.inss=sal_b*0.08;
else if (funcionario.sal_b>300&&funcionario.sal_b<=700)
funcionario.inss=sal_b*0.09;
else if(funcionario.sal_b>700)
funcionario.inss=funcionario.sal_b*0.10;
funcionario.sal_l=funcionario.sal_b-funcionario.inss+(15*funcionario.dep)+40+100;
printf("\n O funcionário %s recebe %.2f de salario liquido",funcionario.name,funcionario.sal_l);
printf("\n\n");
return 0;
} erros que vi! vamos por partes: 1. scanf sempre se utiliza de referencia: scanf("%d", numero); esta errado! falta o E comercial & scanf("%d", &numero); 2. em if, quando você quer associar duas premissas, sejam elas por OU ou E ex se num=0 OU num=2 em c ficaria: if(num==0||num1==2), se uma das duas condicoes for satisfeita, ta valendo. mesma coisa com o e if (num==0&&num1==2) só ta valendo se as duas forem verdadeiras 3. struct precisava de ser refinado muito. struct é um tipo de registro. depois de criado você precisa criar um novo registro do tipo que você fez. sintaxe: struct NOME_DO_TIPO { tipo1 variavel1; etc.. }; struct NOME_DO_TIPO NOME_DO_REGISTRO; percebe bem como foi feito no codigo. depois você retira o valor, le ou modifica ele utilizando a sintaxe NOME_DO_REGISTR.variavel1=argumento; 4. realloc é muito poderoso, mas precisa de pratica pra poder usar ele. recomendacoes: quando if possuir uma instrucao apenas não tem necessidade de colocar {} exemplo: if(num==2) num++; soma uma unidade a variavel se ela for igual a 2.# referencia que você pode pegar: http://www.ime.usp.br/~pf/algoritmos/aulas/stru.html http://www.cplusplus.com/reference/clibrary/cstdlib/realloc/ não sabe ingles? aprenda pra progamar, minha ultima recomendacao!! Salve Dennis Ritchie!