Ainda não entendi muito bem a diferença nitida do uso do Typedef em struct, sei que cria um novo tipo no código, temos por ex os tipos int, float... Sei que cria um novo tipo mas tenho 2 códigos aqui com e sem o uso de Typedef e não consegui notar diferenças na utilização pois ambos no código chamam os nomes da struct.variavel dentro da struct e no final da tudo certo, não entendi quando e não utilizar o Typedef.
Uso de typedef
#include <stdio.h>
#include <stdlib.h>
#define TRUE 1
typedef struct _f { //criando um tipo de struct
int ladoA, ladoB, area, perimetro;
} Figura; //"figura" = nome do typedef, que envolve a linha 4 e 5.
int main(){
Figura fig; //Aqui eu chamo o nome do typedef "figura" e atribuo tudo que esta em typedef dentro da variavel fig para que seja
//utilizada posteriormente no codigo para chamar cada uma das variaveis criadas no typedef
FILE *arqEnt, *arqSai;
arqEnt = fopen("reang.in", "r");
if(arqEnt == NULL){
printf("Erro no arquivo de entrada\n");
exit(1);
}
arqSai = fopen("resultado.txt", "w");
if(arqSai == NULL){
printf("Erro no arquivo de saida\n");
exit(1);
}
while(TRUE){//true = loop infinito
fscanf(arqEnt, "%d %d", &fig.ladoA, &fig.ladoB);
if(fig.ladoA==0 || fig.ladoB==0)
break;
fig.area = fig.ladoA * fig.ladoB;
fig.perimetro = 2 * (fig.area + fig.ladoB);
fprintf(arqSai, " Area:%d\tPerimetro:%d\n", fig.area, fig.perimetro);
}
fclose(arqEnt);
fclose(arqSai);
return 0;
}
--------------------------------------------------------------------------------------------------------------------------------------------------------------
Sem typedef
#include <stdio.h>
int main( void )
{
struct ficha_aluno //Struct, usado para armazenar, diversos dados, relativos a uma única coisa.
{
char nome[40];
int numero;
float nota;
} aluno;
printf("\n ---------- Cadastro de aluno ------------ \n\n");
printf("Nome do aluno .....: ");
fgets(aluno.nome, 40, stdin); //aluno: Tipo da struct, e depois do ponto é em qual variavel eu quero armazenar o que será digitado.
// stdin (conjunto de caracteres que virão do teclado).
printf("Digite o número do aluno: ");
scanf("%d", &aluno.numero); //Será armazenado na variável numero na struct ficha_aluno
printf("Informe a nota do aluno: ");
scanf("%f", &aluno.nota);
printf("\n\n -------- Lendo os dados do struct ------- \n\n");
printf("Nome ....: %s", aluno.nome);
printf("Numero ....: %d \n", aluno.numero);
printf("Nota ....:%.2f \n", aluno.nota);
return (0);
}