The whole name does not appear

2

In C language as I can show the whole name when you are asked to enter the user name, I think the char definition is not correct, my code is this:

int main(int argc, char** argv) {
char nome[100];
fflush(stdin);
int idade;// para garantir que o inteiro utilza 2Bytes
int montdep;// Inteiro utiliza 4Bytes
long int numconta;// para garantir que inteiro utiliza sempre 4Bytes

printf("Introduza o seu nome:\n");
scanf("%s %s",nome);
    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 de %d anos, depositou %d€ na conta %ld",nome,idade,montdep,numconta);
    }    
}

and the result is this

Introduza o seu nome:
Jose Esquina
Introduza a sua idade:
25
Introduza o valor a depositar:
2222
Introduza o numero de conta :
22222222222222
Jose de 25 anos, depositou 2222€ na conta 22222222222222

I wanted the name to appear all that was entered and only Jose appears

    
asked by anonymous 06.11.2017 / 23:52

2 answers

1

Placing scanf("%s %s" reads two words to two different variables, not one. If you want to read multiple words for a string and end only on Enter you can change the reading to:

scanf("%[^\n]s",nome);

That will only end in \n . Note that this can be dangerous however if the person inserting the data puts more data than is supposed, in this case the 100 you have set.

If you want to work around this situation you can change to a reading with fgets , which already allows you to specify the maximum size read:

fgets(nome, 100, stdin);

Note no 100 as the second parameter that is the maximum number of characters to read. However, the \n entered by the user will stay in nome also, which you can remove by doing:

nome[strlen(nome) - 1] = '
scanf("%[^\n]s",nome);
';

Documentation for the scanf and for the fgets

Example on Ideone

    
07.11.2017 / 00:16
0

You forgot to put & to store the name, notice that your line stays with ,nome , changed to = > &nome and also char character for string but can also leave as char if you want, and note that you have two %s %s to store a single variable, this is not necessary

int main(int argc, char** argv) {
string nome[100];
fflush(stdin);
int idade;// para garantir que o inteiro utilza 2Bytes
int montdep;// Inteiro utiliza 4Bytes
long int numconta;// para garantir que inteiro utiliza sempre 4Bytes

printf("Introduza o seu nome:\n");
scanf("%[^\n]s", &nome);

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 de %d anos, depositou %d€ na conta %ld",nome, idade, montdep, numconta);
}    
}
    
06.11.2017 / 23:59