2016-02-15 2 views
2

Я написал программу для ввода двух чисел и либо добавляет, либо вычитает числа в зависимости от указанной операции. Вот мой код:c - переменная char продолжается без ввода

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

int main() 
{ 
    float i, j, k; 
    char a; 
    printf("This is a program to add or subs two number.\n"); 
    printf("Enter the first number : "); 
    scanf("%f", &i); 
    printf("Enter the second number : "); 
    scanf("%f", &j); 
    printf("Give your choice(+ or -): "); 
    scanf("%c", &a); 
    switch(a){ 
     case '+' : 
      k = i + j; 
      printf("Sum = %f\n", k); 
      break; 
     case '-' : 
      k = i - j; 
      printf("Difference = %f\n", k); 
      break; 
     default: 
      printf("Cannot do this operation\n"); 
    } 
    return 0; 
} 

Эта программа принимает данные для двух чисел, но пропускает ввод в эксплуатацию и работает дело по умолчанию. Пожалуйста помоги! (Я использую gcc-компилятор).

+1

Спасибо за быстрый ответ! Не могли бы вы объяснить причину этого? –

+2

Большое спасибо! , Кстати, как мне добавить комментарий? –

+3

@MohitGarg Наведите указатель мыши на левую часть комментария. Должен появиться крошечный значок со стрелкой вверх. Также будет значок флага, который может быть использован для привлечения внимания модератора, если есть неуместные комментарии (грубость, спам и т. Д.). – Lundin

ответ

2

Спецификатор преобразования% c не будет автоматически пропускать какие-либо ведущие пробелы, поэтому, если во входном потоке есть паразитная строка новой строки (например, из предыдущей записи), вызов scanf будет потреблять ее немедленно.

Один из способов обойти эту проблему, чтобы положить пустое пространство перед спецификатором преобразования в формате строки:

Scanf («% С», & а); Пустой в строке формата говорит scanf пропускать ведущие пробелы, а первый символ без пробелов будет считываться с помощью спецификатора преобразования% c.

Aditya

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