我有:"ETSGYU-deDEGUw<div>TOTO/$$/hfuiehfurei"
我希望在"<div>"
之后和"/$$/"
之前获取链条:"TOTO"
int main (int argc, char* argv[])
{
char IN[1000];
char OUT[1000];
strcpy(IN,"ETSGYU-deDEGUw<div>TOTO/$$/hfuiehfurei");
...
printf("%s\n",OUT);
}
祝你好运
答案 0 :(得分:3)
使用<div class="flexslider">
<ul class="slides">
<li> Slide 1 <img src"img/animatedgif1.gif" /></li>
<li> Slide 2 <img src"img/animatedgif2.gif" /> </li>
<li> Slide 3 <img src"img/animatedgif3.gif" /></li>
<li> Slide 4 <img src"img/animatedgif4.gif" /></li>
</ul>
@pm100。
要不提供所有代码,请使用以下大纲。 OP仍然需要确定4个strstr()
部分。
...
答案 1 :(得分:1)
char IN[1000];
char* OUT;
char* OUT2;
int found, i;
strcpy(IN,"ETSGYU-deDEGUw<div>TOTO/$$/hfuiehfurei");
OUT=strstr(IN,"<div>");
OUT2=strstr(OUT,"/$$/");
OUT2[0] = '\0';
OUT= OUT +5;
printf("%s\n",OUT);
答案 2 :(得分:1)
您有很多方法可以做到这一点,包括:
regex.h
,这些起初有点难以使用,特别是如果您以前从未操纵过正则表达式。您可以在StackOverflow too上找到许多关于互联网的示例。 strstr() :此函数返回指向第一个字符串参数中第二个字符串参数的第一个出现的指针。所以,你可以尝试这种方式:
char result[32] = { 0 };
char *str = "ETSGYU-deDEGUw<div>TOTO/$$/hfuiehfurei";
// Find the position of the differents markers ("<div>" and "/$$/")
char *marker1 = strstr(str, "<div>");
// Check if the pattern was found
if (! marker1) {
printf("Could not find string \"<div>\"\n");
return;
}
// Place marker1 to the beginning of the text to copy
marker1 += strlen("<div>");
// Find the second marker "/$$/"
char *marker2 = strstr(marker1, "/$$/");
// Check if the pattern was found
if (! marker2) {
printf("Could not find string \"/$$/\"\n");
return;
}
// Compute the len of the text to copy
int len = marker2 - marker1;
// Copy the text to the result buffer, but take care of the buffer overflow
strncpy(result, marker1, len < 32 ? len : 32);
这是一个快速的例子,可以改进,但主要的想法就在这里。另外,请注意缓冲区长度。
答案 3 :(得分:0)
直接的方法可以采用以下方式
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main( void )
{
char in[] = "ETSGYU-deDEGUw<div>TOTO/$$/hfuiehfurei";
char *out = NULL;
const char start[] = "<div>";
const char end[] = "/$$/";
char *p = strstr( in, start );
if ( p )
{
p += sizeof( start ) - 1;
char *q = strstr( p, end );
if ( q )
{
size_t n = q - p;
out = malloc( n + 1 );
if ( out )
{
strncpy( out, p, n );
out[n] = '\0';
}
}
}
if ( out )
{
puts( out );
}
free( out );
return 0;
}
程序输出
TOTO