How to extract words from a sentence efficiently i

2020-06-30 03:25发布

I need an efficient function that extracts first second and rest of the sentence into three variables.

3条回答
孤傲高冷的网名
2楼-- · 2020-06-30 03:39

Easy way: Use strtok() or strtok_r to get the first two tokens, which will remove them from the string, so the string itself will be your third token you were looking for.

Hard way: Parse it yourself :(

Strtok is in the C string library, and will mutate your original string so be careful, copy the string first if it needs to remain intact.

Possible Example:

//#include <string.h>

char input[] ="first second third forth";
char delimiter[] = " ";
char *firstWord, *secondWord, *remainder, *context;

int inputLength = strlen(input);
char *inputCopy = (char*) calloc(inputLength + 1, sizeof(char));
strncpy(inputCopy, input, inputLength);

firstWord = strtok_r (inputCopy, delimiter, &context);
secondWord = strtok_r (NULL, delimiter, &context);
remainder = context;

printf("%s\n", firstWord);
printf("%s\n", secondWord);
printf("%s\n", remainder);

getchar();
free(inputCopy);

This should work just fine and be threadsafe with the original string unmutated.

查看更多
迷人小祖宗
3楼-- · 2020-06-30 03:41

You need to define the delimiters first. There are a few problems with strtok (it modifies its argument, for one, which may land you in trouble). I prefer to read in the string and run a custom parser which may range from sscanf to a full-blown parser. Please post some more detail.

查看更多
登录 后发表回答