基于C语言的字符串提取
提示:
一个中文汉字占三个字节空间,也就是char[3]=“粤”;才能装下,但是一般境况下用char a[]=“粤”,或者char* a=“粤”;这样就能装更多的字符串内容,使用更加方便。
#include <stdio.h>
void main()
{
char buf[128]={"<item desc=""车牌号""><![CDATA[粤C6YJ19]]></item>"};
char a[3]={"粤"};
printf("this is test result : %s\n",a);
}
运行结果如下:
会发现我们只输出了a,但是它连同buf也一起输出了,这好像是因为在内部储存空间中buf刚好储存在a的后面,具体的我也不太清楚,反正我就是菜,哈哈哈~ ~ ~ ~ ~
功能:提取出车牌号粤C6YJ19
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char *char_extract(char*subject,int start,int end)
{
char *result=malloc(sizeof(char)*(end-start));
int i;
int a=0;
for(i=start;i<=end;i++)
{
result[a]=subject[i];
a++;
}
result[i]='\0';
return result;
}
void main()
{
char* content_start=NULL;
char* result;
char buf[]="<item desc=""车牌号|""><![CDATA[粤C6YJ19]]></item>";
char a[]="号";
content_start=strstr(buf,a);
result=char_extract(content_start,14,22); //14和22可以理解为字节偏移量,汉字偏移3个字节,符号和英文字符偏移一个字节
printf("this is test result : %s\n",result);
}
运行结果如下: