首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

怎么得到匹配字符串

2012-03-11 
如何得到匹配字符串?有一个已知的字符串,比如 abcdefhttp://www.abcfgh ,我需要在字符串中匹配 http://

如何得到匹配字符串?
有一个已知的字符串,比如 "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掉它。

热点排行