Então gente, estou aprendendo linguagem c.
Chegando no capitulo de "Tipos definidos pelo programador" onde aprendemos a utilizar o STRUCT, notei um erro bem incomum (pelo menos para mim, que sou iniciante). Se eu rodar esse programa assim do jeito que está, na hora de fazer a leitura da variável rua (bloco 3) contida dentro de STRUCT, ela simplesmente não lê e pula para o próximo bloco para fazer a leitura do número (bloco 4), vide anexo .png (imagem de "erro"). porém se eu mudar o bloco 3 e coloca-lo entre o bloco 1 e 2 ele funciona perfeitamente. testei tanto no visual studio code quanto no code::blocks e em ambos o erro permanece. Lembrando que no livro a ordem é exatamente essa. Alguém poderia me explicar o por quê disso? Seria algum tipo de ordem de procedência, onde o que for char tem de vir primeiro?
Obs: Fiz os teste e, nem o código de exemplo do livro funcionou como deveria.
#include <stdio.h>
#include <stdlib.h>
struct cadastro{
char nome[50];
int idade;
char rua[50];
int numero;
};
int main(){
//bloco 1
struct cadastro cad1;
printf("Digite seu nome: ");
fgets(cad1.nome, 50, stdin);
//bloco 2
printf("Digite sua idade: ");
scanf("%d",&cad1.idade);
//bloco 3
printf("Digite sua rua: ");
fgets(cad1.rua, 50, stdin);
//bloco 4
printf("Digite o número: ");
scanf("%d",&cad1.numero);
printf("\n");
return 0;
}