Problem with Struct in C

1

In this code:

#include <stdio.h>
#include <stdlib.h>

//Usando o struct(Estruturas)
  struct cadastro {
    char nome[50];
    int idade;
    char rua[50];
    int numero;
    };
 int main()
 {
     printf("Digite suas informacaoes:\n");
     struct cadastro c;

     printf("Digite seu nome:\n");
     //Le do teclado uma string e armazena no campo nome
     gets(c.nome);

     printf("Digite sua idade:\n");
     //Le do teclado um valor inteiro e armazena no campo idade
     scanf("%d", &c.idade);

     printf("Digite o nome da sua  rua:\n");
     //Le do teclado uma string e armazena no campo rua
     gets(c.rua);

     printf("Digite o numero da rua:\n");
     //Le do teclado um valor inteiro e armazena no campo numero
     scanf("%d", &c.numero);

     system("cls");

     printf("Nome: %s\n", c.nome);
     printf("Idade: %d\n", c.idade);
     printf("Rua: %s\n", c.rua);
     printf("Numero: %d\n", c.numero);

     system("pause");
     return 0;
 }

I can not type the street name with the scanf, jump directly to the int number reading. In printf it does not tell the street, I can not solve it. Iremovedthesystem("cls") to display.

    
asked by anonymous 18.05.2015 / 02:45

2 answers

1

So, some things you need to fix, and the program I'm going to post works. If you want to read spaces need to adjust, I did it fast now and I'll leave you some links to fix this "problem" in C.

#include <stdio.h>
#include <stdlib.h>

struct cadastro {
    char  nome[50];
    char rua[50];
    int idade;
    int numero;
};

struct cadastro c;

int main(int argc, char** argv) {

    printf("Digite suas informacaoes:\n");

    printf("Digite seu nome: ");
    scanf("%s", &c.nome);

    printf("Digite sua idade: ");
    scanf("%d", &c.idade);

    printf("Digite o nome da sua rua: ");
    scanf("%s", &c.rua);

    printf("Digite o numero da rua: ");
    scanf("%d", &c.numero);

    printf("\nNome: %s\n", c.nome);
    printf("Idade: %d\n", c.idade);
    printf("Rua: %s\n", c.rua);
    printf("Numero: %d\n", c.numero);

    return 0;
}

link    link

    
18.05.2015 / 03:43
3

Actually the bigger problem is - besides the gets - in want to "catch" the \n . With the example Yonathan is solved, but you can not get names with space. To capture names with spaces and not have this problem place a space before each scanf capture form. Ex: scanf(" %[^\n]", c.rua);

18.05.2015 / 05:06