C语言截取字符串问题
发布网友
发布时间:2023-06-26 17:02
我来回答
共6个回答
热心网友
时间:2024-11-02 17:45
/* Note:Your choice is C IDE */
#include "stdio.h"
#define N 1024
void main()
{
char *data = "<html><title><//title><body><p>这是想要的字符串!</p><body></html>";//从文件里读的数据
const char *head = "<body><p>", *end = "</p><body";
char buf[N];
memset(buf, 0, sizeof(buf));
strncpy(buf, strstr(data, head) + strlen(head), strstr(data, end) - (strstr(data, head) + strlen(head)));
puts(buf);
getchar();
}
热心网友
时间:2024-11-02 17:45
大致代码如下
char *src;//源代码
char *pStart=strstr(src,"<body><p>")+9;//找到起点
char *pEnd=strstr(pStart,"</p><body>");//找到终点
char pTemp[1024];//顶一个数组保存抽取的东西
pTemp[0]='\0';//添加结尾
strncat(pTemp,pStart,pEnd-pStart);//将要抽取的字符串添加过去追问char *pStart=strstr(src,"")+9,这里加9是什么意思
追答9就是 ""的长度啊 起点应该在 ""后面
热心网友
时间:2024-11-02 17:46
假设要处理的文本位于当前文件加下面,名字是html.txt,下面代码可以在终端上打印你想要的结果。
#include <stdio.h>
#include <string.h>
#define MAXLINE 80
int main()
{
char buf[MAXLINE]; /* for line processing */
char *buf1;
char tag[10]; /* for html tag */
FILE* fp;
int i, j;
int noend;
int find = 0;
if ((fp = fopen("html.txt", "r")) == NULL) {
printf("file open error.\n");
exit(-1);
}
while (fgets(buf, MAXLINE, fp) != NULL) {
for (i = 0, j = 0; buf[i] != '\0'; i++) {
if (buf[i] == '<') {
tag[j] = buf[i];
noend = 1;
}
if (buf[i] == '>') {
tag[j] = buf[i];
noend = 0;
j = 0;
}
if (noend) {
tag[j++] = buf[i];
continue;
} else {
if (!strncmp(tag, "<p>", 3)) { /* find the tag <p> */
buf1 = &buf[++i];
find = 1;
break;
}
}
}
if (find) /* find the <p> .* </p> line */
break;
}
for (i = 0; buf1[i] != '<'; i++) /* output what we want */
putchar(buf1[i]);
putchar('\n');
return 0;
}
热心网友
时间:2024-11-02 17:47
bool getXMLstr(const char * in_file,const char * in_xmlname,char * out_value) //in_file为文档,in_xmlname为标签内的关键字 out_value 为标签内你要的数值
{
int m_len=strlen(in_xmlname);
char Sxml[20],Exml[20];
snprintf(Sxml,20,<%s>,in_xmlname);
snprintf(Exml,20,</%s>,in_xmlname);
char *start;
char *end;
start=0;
end=0;
start=strstr(in_file,Sxml);
end=strstr(in_file,Exml);
if(start==0||end==0) return FALSE;
int m_valuelen=end-start-m_len-1;
strncpy(out_value,start+m_len+2,m_valuelen-1);
}
大概就是这样了 如果你要得到P标签里面的值 那in_xmlname='p' 自己再看看吧 不懂再追问吧
热心网友
时间:2024-11-02 17:47
大家都说的很详细。
热心网友
时间:2024-11-02 17:48
太深奥了,悄悄溜走吧