Receiving a user's data and displaying this data at the end

0

I want to receive the data of a user and at the end when I run the program I want to show them, but I think that the variable is not so, because the program jumps from name to age directly, and address and does not leave, what I intend is to create a program in C so as to save the user contacts the code is this:

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

int main(int argc, char** argv) {
char nome[50], morada[100];
int idade;
int montdep;
long int numconta;

printf("Introduza o seu nome:\n");
scanf("%[^\n]s",nome);
fflush(stdin);
printf("Introduza a sua morada:\n");
scanf("%[^\n]s",morada);
fflush(stdin);
printf("Introduza a sua idade:\n");
scanf("%d",&idade);

    if(idade<=-1)
    {
        printf("Não se aceita valores negativos\nReinicie programa");
    }  
    else
    {
        printf("Introduza o valor a depositar:\n");
        scanf("%d",&montdep);
        printf("Introduza o numero de conta :\n");
        scanf("%ld",&numconta);  
        printf("%s com morada%s de %d anos, depositou %d€ na conta %ld",nome,morada,idade,montdep,numconta);
    }    
}

The result is this:

Introduza o seu nome:
luis esquinas
Introduza a sua morada:
Introduza a sua idade:
25

As you can see, he will not enter the address and that's where I get the error.

    
asked by anonymous 07.11.2017 / 13:14

1 answer

0

When you use Scanf, it reads the other line as well, one way you can avoid this is by putting a getchar () after Scanf, like this:

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

  int main(int argc, char** argv) {
  char nome[50]; 
  char morada[100];
  int idade;
  int montdep;
  long int numconta;

  printf("Introduza o seu nome:\n");
  scanf("%[^\n]s",nome);
  getchar();
  printf("Introduza a sua morada:\n");
  scanf("%[^\n]s",morada);
  getchar();
  printf("Introduza a sua idade:\n");
  scanf("%d",&idade);

if(idade<=-1)
{
    printf("Não se aceita valores negativos\nReinicie programa");
}  
else
{
    printf("Introduza o valor a depositar:\n");
    scanf("%d",&montdep);
    printf("Introduza o numero de conta :\n");
    scanf("%ld",&numconta);  
    printf("%s com morada %s de %d anos, depositou %d€ na conta %ld",nome,morada,idade,montdep,numconta);
}    
}
    
07.11.2017 / 13:30