Я пытаюсь создать программу, которая может «читать» ввод в два целых числа. .Извлечение целых чисел из строк
What is 20 plus 20
Программа должна «читать» 20 и 20. Я пытался использовать sscanf, но весьма специфична, например,
int a; int b;
sscanf(INPUT, "What is %i plus %i" , &a, &b)
Но это фактически зависит от пользователя, который вводит именно «Что такое x плюс y». Я пробовал использовать atoi, но безрезультатно.
Код (для соответствующих функций):
int main()
{
while(1)
{
takeInput();
PERFORMED_CALC = calcToPerform(); //PERFORMED_CALC checks the operation to perform, e.g. + , -, x or/
printf(" = %i\n", performCalculation()); //PerformCalculation Interprets and solves any sums
}
return 0;
}
Ниже для performCalculation():
int performCalculation()
{
int a = 0; int b = 0;
switch(PERFORMED_CALC)
{
case 1:
{
sscanf(INPUT, "What is %i plus %i", &a,&b);
return a+b;
break;
}
}
}
Идеи?
Мне пришлось отказаться от вашего вопроса из-за нехватки времени, но вы имели в виду напечатать «Что есть ...»? если это так, вы можете просто использовать printf и scanf вместе в одной строке. – MasterMastic
Как выглядит ввод в общем случае? Вы должны определить проблему, прежде чем сможете ее решить. – interjay
Анализ входной формы свободной формы в C будет болезненным, но посмотрите на [strtok()] (http://man7.org/linux/man-pages/man3/strtok.3.html) ... или подумайте о переходе на более высокий язык. – tripleee