2016-05-16 2 views
-1

Я хотел знать о возможных способах чтения строки из ввода, которая соответствует определенному шаблону. более конкретный Я хочу проверить правильный шаблончтение строки ожидаемого шаблона

Например, если я ожидаю, что команда «умножьте 5, 6», и я хочу игнорировать пробел, но для проверки правильного шаблона, поэтому я хочу разделить «умножить» на «5» , "и" 6 "из входного потока для проверки действительности для каждого

Есть ли способ сделать это с помощью scanf? или получает?

спасибо

+0

Есть бесчисленное множество существующих вопросов на чтение и соответствующих строк. И даже сама страница 'scanf' man дает более чем достаточно информации для ответа на эту часть вашего вопроса. Проводили ли вы какие-либо фундаментальные исследования или поиски? – kaylum

+0

На самом деле я искал и исследовал, но не мог понять ответы. Я только начал изучать С, и объяснения мне пока не ясны. Я не понимаю сурового отношения, хотя, я думал, что это место, чтобы задавать вопросы и учиться. В любом случае, я обязательно стану экспертом, прежде чем выкладывать другой вопрос. –

+0

Дело не в том, чтобы быть экспертом. Речь идет о фундаментальных исследованиях и задании четкого вопроса. Если у вас есть идея, что «scanf» будет работать, внимательно изучите страницу руководства, найдите примеры и напишите код, чтобы попробовать. Лучший способ учиться - попытаться сделать это самостоятельно. Если код, который вы пишете, не работает, и вы не можете решить, зачем тогда возвращаться, чтобы показать свой код и задать конкретный вопрос об этом коде. Как бы то ни было, ваш вопрос не сформулирован таким образом, чтобы дать понять, с какой конкретной проблемой вы столкнулись. – kaylum

ответ

0

Следующий код сделает то, что вы хотите.

#include <stdio.h> 

int main() 
{ 
    int num1, num2; 
    char operation[15]; 
    printf("\nPlease Enter Input: "); 
    scanf("%s%d ,%d",operation,&num1,&num2); // note the space before the comma 
    printf("\nYou entered \"%s %d,%d\"\n",operation,num1,num2); 

    return 0; 
} 

Выполнение этого кода дает следующее (выход изменяется в зависимости от входа):

Please Enter Input: multiply 5,6 

You entered "multiply 5,6" 

Запуск его снова с пробелами в различных частях ввода:

Please Enter Input:  multiply  8 ,  120 

You entered "multiply 8,120" 

запустить этот код и попробуйте удалить пространство перед запятой в scanf и посмотреть, что произойдет, когда вы вводите «умножить 5, 7»

  • Примечание:% s и% d автоматически игнорируют ведущие пробелы.

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

Reference (с ++ сайт, но те же функции, с):

http://www.cplusplus.com/reference/cstdio/scanf/

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