C: Процесс продолжает выход, прежде чем можно будет что-либо ввести - PullRequest
0 голосов
/ 06 ноября 2019

У меня проблемы с кодом ниже. Прежде чем я смогу ввести ответ [y / n], он просто выходит из программы. Я не вижу никаких ошибок в моем компиляторе, поэтому мне трудно это исправить.

   srand(time(NULL));  
    int nGid; //guest id
    char opt1;
    printf(" Hello Guest! do you have an id number [Y/N]?");
    scanf("%c", &opt1);

    opt1 = toupper(opt1);
  //asks for guest id
    if (strcmp(opt1, 'Y') == 0){
        printf("Please enter id: \n");
        scanf("%d", &nGid);
    }
  //generates random id number
    else {
        nGid = rand()%100;
        printf("Your guest id is : %d", nGid);
  return 0;
}

спасибо за любую помощь!

Ответы [ 2 ]

1 голос
/ 06 ноября 2019

Вместо этого утверждения

scanf("%c", &opt1);

используйте

scanf(" %c", &opt1);
       ^^^

Обычно вместо

opt1 = toupper(opt1);

было бы правильно написать

opt1 = toupper( ( unsigned char )opt1);

В противном случае вызов функции может иметь неопределенное поведение.

Переменная opt1 имеет тип char. Он не может содержать строку. Поэтому вы не можете применять стандартную функцию strcmp, которая работает со строками. Просто напишите

if ( opt1 == 'Y' ){
1 голос
/ 06 ноября 2019

strcmp принимает нулевое окончание char *, но вы передаете char в качестве аргументов.

Вы можете напрямую сравнить два char, используя оператор ==.

Изменить.

if (strcmp(opt1, 'Y') == 0){

до

if (opt1 == 'Y'){
...