开发者

How do I get the substr this way in c?

/^[^\s]+\s([^\s]+)\s/

In PHP,I can use regex to get the substr by $1,

how should I do it in C?

It's better if can do it without regex,though.

UPDATE

Put simply, how do I get werwerur out of swerwer werwerur y (th开发者_运维问答e second)?


I recommend to use strchr() - it is very fast to find characters in strings

#include <string.h>
..
char str[] = "swerwer werwerur y";
char *p1 = NULL,*p2 = NULL;

p1 = strchr(str,' ');
p1++;
p2 = strchr(p1,' ');
if(p2) *p2 = 0;

printf("found: %s\n", p1);

if you have multiple delimiters, you can use strtok_r() or strpbrk() as in example below:

    char str[] = "swerwer ., werwerur + y";
    const char *dlms = " .,+";
    char *p1 = NULL,*p2 = NULL;

    p1 = strpbrk(str,dlms);
    while(strchr(dlms,*p1)) p1++;
    p2 = strpbrk(p1,dlms);
    if(p2) *p2 = 0;

    printf("found: %s\n", p1);

(should cleanup code: in case if strpbrk returns NULL)


Use strtok() to find the spaces.

Strtok man page:

#include <string.h>
...
char *token;
char *line = "LINE TO BE SEPARATED";
char *search = " ";


/* Token will point to "LINE". */
token = strtok(line, search);


/* Token will point to "TO". */
token = strtok(NULL, search);


If I understand what you want correctly, sscanf should be able to do the job:

char result[256];  
sscanf("swerwer werwerur y", "%*s %255s", result);


You could look for spaces in a char-string by using this:

char* strText = "word1 word2 word3";
int iTextLen = strlen(strText);
for(int i = 0; i < iTextLen; i++)
{
    if(strText[i] == ' ') //is it a space-character
    {
        //save position or whatever
    }
}

If you're looking for the second word, you just have to save the positions of the first space and of the second space and get the character string at the indices between the two.


If you are using a posix/unix system like Linux, you could use the regex API directly:

$> man 3 regex

Or google for regcomp() or regexec().

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜