Char variable is not receiving values in C

Asked

Viewed 48 times

0

Good afternoon, everyone

my variable char z is not working with either scanf_s or gets_s. With the scanf it generates an exception and locks the program, using gets_s at the time of entering the data it jumps straight to the end of the code. Can anyone help me? I’ve tried using the keyboard buffer wipe code and it doesn’t work either.

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

int main()
{
    setlocale(LC_ALL, "portuguese");
    
    //Declaração das variáveis, dos ponteiros e inicialização dos ponteiros.
    int x;
    float y;
    char z[10];

    //Momento em que o usúário digita os valores iniciais para as variáveis.
    printf("Digite um número inteiro a ser atribuido à variável x: ");
    scanf_s("%d", &x);
    printf("Digite um número real a ser atribuído à variável y: ");
    scanf_s("%f", &y);
    printf("Digite uma letra a ser atribuída à variável z: ");
    gets_s(z);

    system("pause");
    return 0;

}

Thank you all!

4 answers

0

Person updating the post, the solution I found was to clean the keyboard buffer, under each scanf I added the following line:

while ((c = fgetc(stdin)) != EOF && c != ' n') {}

Obs: required to declare the variable char c.

0

You can try using the get function like this:

char ch;

   printf("Digite algum caracter: ");

   ch = getchar();

   printf("\n A tecla pressionada eh %c.\n", ch);

0

Do it that way:

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

int main()
{
    setlocale(LC_ALL, "portuguese");
    
    //Declaração das variáveis, dos ponteiros e inicialização dos ponteiros.
    int x;
    float y;
    char z[10];

    //Momento em que o usúário digita os valores iniciais para as variáveis.
    printf("Digite um número inteiro a ser atribuido à variável x: ");
    scanf_s("%d", &x);
    printf("Digite um número real a ser atribuído à variável y: ");
    scanf_s("%f", &y);
    
    printf("Digite uma letra a ser atribuída à variável z: ");
    scanf_s("%s",&z);

    system("pause");
    return 0;

}
  • Is not scanf_s("%s",&z); and yes scanf_s("%s", z);.

0

Try it that way:

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

int main()
{
    setlocale(LC_ALL, "portuguese");
    
    //Declaração das variáveis, dos ponteiros e inicialização dos ponteiros.
    int x;
    float y;
    char z[10];

    //Momento em que o usúário digita os valores iniciais para as variáveis.
    printf("Digite um número inteiro a ser atribuido à variável x: ");
    scanf_s("%d", &x);
    printf("Digite um número real a ser atribuído à variável y: ");
    scanf_s("%f", &y);
    printf("Digite uma letra a ser atribuída à variável z: ");
    scanf("%c", &z);
 
    system("pause");
    return 0;

}

Browser other questions tagged

You are not signed in. Login or sign up in order to post.