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()
.
精彩评论