2013-11-26 3 views
0

Я только начал использовать C, и у меня возникли проблемы с компиляцией. Кажется, что у компилятора постоянно возникают проблемы с char. Обратите внимание, как мне нужно поставить пробел до% c. Теперь, после изучения онлайн-бит, я узнал, что добавление, 1 после & флага в значительной степени решает это, но я скорее разрешаю это полностью, так как он должен работать так. Я использую Visual studio 2013 кстати.Проблемы с char и scanf_s()

#include <stdio.h> 

void main() 
{ 

    int num; 
    char flag; 
    while (1) 
    { 

    printf("Please enter your no.:"); 
    scanf_s("%d", &num); 

    if (num > -1) 
    { 

     if (num < 10) 
     { 
     printf("Your number is 1 digit.\n"); 
     } 

     else if (num < 100) 
     { 
     printf("Your number is 2 digits.\n"); 
     } 

     else if (num < 1000) 
     { 
     printf("Your number is 3 digits.\n"); 

     } 

     else if (num > 999) 
     { 
     printf("Your number has a lot of digits.\n"); 

     } 
    } 

    else 
    { 
     printf("Please input a correct value.\n"); 

    } 

    printf("Would you like to countinue? y/n \n"); 
    scanf_s(" %c", &flag) 
    // problem 

    if (flag == 'n') 
    { 
     exit(0); 
    } 
    } 

} 

ответ

0

Ваш код не является действительным, необходимо указать размер буфера с scanf_s(). See the documentation:

В отличие от scanf и wscanf, scanf_s и wscanf_s требуют, чтобы размер буфера быть определен для всех входных параметров типа С, С, S, S, или [. Размер буфера в символах передается как дополнительный параметр, непосредственно следуя указателю на буфер или переменную.

Вот почему он работает, если вы добавите, сделайте звонок scanf_s(" %c", &flag, 1);.

+0

А также удалить пробел в «% c» i.e «% C» для вышеуказанного. – VDN

+0

Спасибо, это решило. Однако мне еще нужно поставить пробел до% c. – omm118

+1

@VDN пространство в строке формата необходимо в этом случае для использования символа новой строки, оставшегося в stdin, при использовании предыдущего scanf_s для чтения num в начале цикла while(). –

Смежные вопросы