2015-10-03 2 views
-3

Почему я не могу использовать две функции для ввода букв?Почему я не могу использовать две функции scanf для ввода букв

Например:

int a; 
int b; 
printf("a"); 
scanf("%c", &a); 
printf("b"); 
scanf("%c", &b); 
a=a+b; 
printf("%c", a); 

Есть много решений, но я хочу знать, что является причиной того, почему второй scanf функция не работает.

+2

Определение "не работает". Кажется, [работа для меня] (http://rextester.com/FTN52965) –

+2

'printf (b"); 'Пожалуйста, введите правильный код. – PaulMcKenzie

+1

Если вы хотите прочитать' char' pass a 'char'. – alk

ответ

0
  1. Это C не C++ (Eventhough C++ приносит достаточно C совместимости, чтобы сделать этот код действителен, используя соответствующие требования компилятора C++ с #include <stdio.h>).

  2. Спецификатор %c предназначен для символов. Вы читаете и пишите int.

Таким образом, вы должны использовать %i.

int a; 
int b; 
printf("a"); 
scanf("%i", &a); 
printf("b"); 
scanf("%i", &b); 
a=a+b; 
printf("%i", a); 

Выход

a5 
b7 
12 
+1

Это также скомпилировалось бы как C++, демонстрируя то же поведение. – alk

+0

@alk: Это потому что компилятор C++ может скомпилировать некоторый код C не из-за того, что этот код является кодом C++. Вы бы скорее использовали потоки на C++. (И если я вообще использую stdio, я бы включил 'cstdio' и использовал' std :: printf', а не 'stdio.h' и' printf'.) – Pixelchemist

+1

Если код компилируется как C++ и C, я бы подумал это C-код, потому что тогда это не «идиоматический код на C++». – emlai

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