2013-11-10 3 views
1

Я хочу найти subString (из массива) в String, но я хочу найти реальное слово.C, работа со строкой

Например:

const char *subString[] = { "adam", "car", "red"}; 
char* String[] = "madam, I am adam";.. 

А теперь, как я могу найти имя адам? Но я не нахожу м адам, но я хочу, чтобы найти только адам ...

Например: сударыня, я адам

Как modifi strstr?

Вы можете мне помочь? Спасибо .. Мой последний вопрос: here

+0

Какой компилятор соответствует 'subString'? – Etherealone

+0

Даже не компилируется! Попробуйте 'const char * subString []' –

+0

Его правда, я отредактировал .. – JaLe29

ответ

2

Когда вы делаете следующую декларацию

const char subString[] = { ... } 

вы заявляете, что subString представляет собой массив символов. Затем вы пытаетесь инициализировать его в массив строк, который не будет работать. Если вы хотите, чтобы быть массивом строк, вы должны объявить его как массив указателей на символы:

const char *subString[] = { ... } 

Что касается вашей проблемы, одно решение является «разметить» строка (String в вашем случае), т. е. разделить его на пробелы, а затем перебрать через массив subString, пытаясь найти строку внутри токенизированной строки.

Что-то вроде этого псевдокода:

for each space-delimited string in String 
{ 
    strip_tokenized_string_of_punctuation(); 

    for each string in subStrings 
    { 
     if tokenized_string contains substring 
     { 
      printf("String contains the word %s\n", substring); 
     } 
    } 
} 

Чтобы помочь вам, вы можете проверить функции strtok и strstr.

+0

Его правда, я отредактировал .. – JaLe29

+0

И как я могу проверить эффективно? Сравнить первую и последнюю букву из массива subString? – JaLe29

+0

+1 для псевдокода – Sam

0

Должна быть функция strtok(), которая получает все слова в строке (вам нужно указать разделитель как параметр, а в вашем случае это пробел), вы можете затем перебрать все слова, которые вы получаете, и увидеть если они находятся в вашем первом массиве. то у вас не будет проблемы с «мадам», как в вашем примере.

+0

Каков правильный синтаксис strtok()? – JaLe29

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