2015-12-25 3 views
0

Я сделал программу, в которой вы вводили предложение, а затем слова. Если слово из предложения указано в словах, которые вы ввели, то отметьте работу в setnence. Пример:Найти слово в предложении

input sentence 

My name is John. 

input words 
name 
Why 
do 
apple 

Final output 

My [name] is John. 

Это работает. Я разделил слова на токенах (через «"), используя strtok и добавив их в структуру. Я храню введенные слова в массиве. Но проблема в том, что при вводе пользователя «имя» (с пробелом при запуске) оно не соответствует слову в предложении, потому что я разделяю его на «», что означает, что в структуре нет пробелов.

Есть ли какой-либо способ, без перебора, чтобы проверить, существует ли слово в предложении с пробелом? Пример

Input sentence 
My name is john 

words 
name 
is 
Final output 
My[ name] [is] John. 
+3

'fgets()' и 'strstr()'? –

+2

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

+0

would str str() приведет к нежелательному поведению, где в предложении «Привет, меня зовут Джон», слово «Joh», найдет совпадение в слове «Джон»? Я думаю, что op хочет совместить целые слова, а не просто подстроку слов. – Darlyn

ответ

2

Вам необходимо вычеркнуть все знаки пунктуации и пробелы из ваших жетонов. Если у вас есть «Джон» в вашем наборе ввода, вы обнаружите, что не против «Джона». от первоначального предложения.

Я рекомендую то, что когда вы добираетесь до слова, вы обрезаете его (.trim()), а затем удаляете любые нежелательные символы (",", "-", ".").

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

+0

хорошо, если перед именем было два пробела, скажем «имя», это все равно будет совпадать, даже если в предложении есть только одно место. Я не уверен, намерен ли OP это или нет. Это полностью зависит от того, что ОП определяет «слово» как. Если это всего лишь куча персонажей (включая пробелы), то он не может его обозначить. –

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