2013-12-07 4 views
1

Я пытаюсь прочитать файл и определить экземпляры слова, предоставленного в командной строке. Однако, когда я использую это:Использование слова в качестве разделителя для strtok?

strtok(line,argv[2]) 

идентифицирует любой экземпляр любого письма, присутствующего в ARGV [2] (как я понимаю, что это как strtok работает), но я только хочу, чтобы определить точные совпадения строки. Если мне нужно использовать strtok, есть ли способ обойти это? Благодаря!

+0

Зачем кому-то требовать от вас использовать 'strtok'? Это глупо. Это явно неправильный инструмент для работы. – Duck

+0

Боюсь, что это невозможно. Вам нужна 'strstr'. –

+0

Не могу сказать, почему. Я понимаю, что strstr - это ясный выбор здесь, но strtok и ничего другого не требуется. – user2559503

ответ

0

Проверьте функцию strstr(char *str1, char *str2).

#include <stdio.h> 
#include <string.h> 

int main() 
{ 
    char str[] ="A random string."; 
    char *pch; 

    pch = strstr(str,"random"); 

    if(pch == NULL) 
    { 
     puts("Doesn't contain random"); 
    } 
    else 
    { 
     puts("Contains random"); 
    } 

    return 0; 
} 
0

strtok будет tokanize строку на основе данного списка в качестве второго аргумента. он будет использовать комбинацию символов. например, если второй аргумент содержит строку «abcd», то strtok будет маркерными строками, если он обнаружил «a», «ab», «abc» или «abcd». В соответствии с вашим требованием вы можете использовать strstr (строка, подстрока). эта функция вернет вам указатель на первое вхождение строки. Используя эту функцию, вы можете написать свою собственную функцию, которая будет маркировать строку в подстроках на основе вашей реквизиции.

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