如何得到匹配字符串?
有一个已知的字符串,比如 "abcdefhttp://www.abc fgh ",我需要在字符串中匹配 "http:// "到有空格结束,没有空格到最后,这样应该得到 "http://www.abc ",请问如何写这个函数?另外如果http不考虑大小写怎么办,如 "HtTp "。谢谢。
[解决办法]
#include <stdio.h>
#include <string.h>
int main()
{
char str[] = "abcdefhttp://www.abc fgh ";
char ptr[30];
char *p;
p = strstr(str, "http ");
sscanf(p, "%[^ ] ", ptr);
printf( "%s\n ", ptr);
return 0;
}
[解决办法]
#include <stdio.h>
#include <string.h>
int main()
{
char str[] = "abcdefhttp://www.abc fgh ";
char ptr[30];
char *p;
p = strstr(str, "http://www.abc fgh ");
sscanf(p, "%[^ ] ", ptr);
printf( "%s\n ", ptr);
return 0;
}
应当是这样吧:
p = strstr(str, "http://www.abc fgh ");
[解决办法]
-------> bargio_susie(强制结帖)
sscanf(p, "%[^ ] ", ptr);函数里面的参数能给讲解一下么。十分感谢~帮帮新手
我有函数手册可是还是不明白
[解决办法]
用boost,不过是c++
#include <boost/regex.hpp>
#include <iostream>
void parse(boost::regex& expression, const std::string& s)
{
boost::match_results <std::string::const_iterator> what;
boost::match_flag_type flags = boost::match_default;
std::string::const_iterator start = s.begin();
std::string::const_iterator end = s.end();
while(boost::regex_search(start, end, what, expression, flags))
{
std::cout < < std::string(what[0].first, what[1].second) < < "\t ";
//std::cout < < std::string(what[2].first, what[2].second) < < "\n ";
start = what[0].second;
flags |= boost::match_prev_avail;
flags |= boost::match_not_bob;
}
std::cout < < "\n ";
}
int main(int argc, char** argv)
{
std::string re( "http://[^ ]+ " );
std::string s1( "abcdefhttp://www.abc fgh ");
boost::regex expression(re);
parse(expression, s1);
system( "pause ");
return 0;
}
[解决办法]
#include <stdio.h>
#include <stdlib.h>
int main()
{
char *str= "abcdefhttp://www.abc fgh ", *p;
char result[40];
p = strstr(str, "http:// ");
sscanf(p, "http://%s ", result); //sscanf 控制, %s 自动在空白符号截止
printf( "Result=%s\n ", result); //OK,得到需要的结果
system( "PAUSE ");
return 0;
}
[解决办法]
----------> jixingzhong(瞌睡虫·星辰)
C语言稍微麻烦点:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
---------------------------------------
编绎不能通过。。。。。。
[解决办法]
char str[] = "abcdefhttp://www.abc fgh ";
char *p = strncasecmp(str, "http:// ", sizeof( "http:// "));
char *ptr = strpbrk(p, " ");
char *result = (char*)malloc(ptr - p + 1);
strncpy(result, p, ptr - p);
return result;
result里就是你要的字符串了,最后记得free掉它。