@Neo_hacker

Как не переноситься на следующую строку после scanf?

Я сделал простой калькулятор, но дело в том после получения строки переносится на следующую, что бы принтить ответ. Вот например, только для суммы (не буду весь код выкладывать, будет флудом):

printf("Type what you want to calculate: "); 
scanf("%d%c%d", &first, operation, &second);
if (*operation == '+')
        printf("= %d\n", first+second);


После выполнения scanf, он не продолжает строку, а идет на следующую

Type what you want to calculate: 2+2
= 4


Есть ли возможность, что бы он продолжил строку?
Таким образом:

Type what you want to calculate: 2+2 = 4


Спасибо
  • Вопрос задан
  • 1060 просмотров
Решения вопроса 1
myjcom
@myjcom
windows

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

int main()
{
  char buf[80];
  int i = 0;
  int a;
  char op;
  int b;
  while((buf[i] = _getch(stdin)) != 13)
  {
    putchar(buf[i]); ++i;
  }
  sscanf(&buf, "%i%c%i", &a, &op, &b);
  if(op == '*')
    printf(" = %i", a * b);
  return 0;
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@res2001
Developer, ex-admin
Если не зарываться сильно в "API той или иной ОС", то можно считывать посимвольно, не scanfом, а getcharом, но тогда придется вручную осуществлять весь контроль ввода, конвертировать числа и т.д. и т.п.
Но это можно сделать в рамках стандартной библиотеки.
Ответ написан
Комментировать
@Mercury13
Программист на «си с крестами» и не только
Без особого консольного API той или иной ОС — никак. Потому что строка передаётся в консоль, когда пользователь нажимает на ввод.
Ответ написан
Комментировать
@ns5d
нечего сказать
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
22 нояб. 2024, в 00:55
500 руб./за проект
21 нояб. 2024, в 23:30
300000 руб./за проект
21 нояб. 2024, в 22:21
3000 руб./в час