Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include "string.h"
- #include "stdio.h"
- int searchWord( const char str[81], const char word[21]);
- void testSearchWord();
- int _tmain(int argc, _TCHAR* argv[])
- {
- testSearchWord();
- return 0;
- }
- int searchWord( const char str[81], const char word[21])
- {
- int result = -1;
- char az[100] = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890";
- if(// заданое слово входит в строку
- strstr(str, word) != NULL &&
- // слева от первой буквы слова стоит разделитель
- // (получаем указатель на начало слово, смещаемся на ячейку влево,
- // получаем значене, проверяем есть ли оно в списке символов)
- ((strchr(az, *(strstr(str, word) - 1)) == NULL) ||
- // или слово стоит в начале строки
- // начало слова это начало строки
- strstr(str, word) == str)&& // сменил на более короткую и понятную
- // справа от последней буквы стоит разделитель
- // (получаем указатель на начало слово, смещаемся к символу стоящему после слова,
- // получаем значене, проверяем есть ли оно в списке символов)
- ((strchr(az, *(strstr(str, word) + strlen(word))) == NULL) ||
- // или слово стоит в конце строки
- // получаем указатель на символ стоящий после слова,
- // нвходим количество символов между ним и началом строки
- // если символ был последним то количество символов будет равно длине строки
- ((strstr(str, word) + strlen(word)) - str == strlen(str))))
- {
- result = strstr(str, word) - str;
- }
- return result;
- }
- void testSearchWord()
- {
- char testStr[6][5] = {
- {"cat"},
- {"_cat"},
- {"cat_"},
- {"c_at"},
- {"Ocat"},
- {"catO"}
- };
- char testWord[] = "cat";
- int expect[] = {0, 1, 0, -1, -1, -1};
- int problem = 0;
- for(int i=0; i<6; i++)
- {
- if(searchWord(testStr[i], testWord) != expect[i])
- {
- printf(" v teste %d oshibka %s %d>> %d\n", i + 1, testStr[i], searchWord(testStr[i], testWord), expect[i]);
- problem++;
- }
- }
- if(!problem)
- {
- printf("vse ok\n");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement