gpt4 book ai didi

c - 从 HTML 文件中提取纯文本

转载 作者:太空宇宙 更新时间:2023-11-04 02:10:02 24 4
gpt4 key购买 nike

你好,我希望你能帮助我。我必须编写这段代码(用 C 语言)来下载网站的页面源并将其保存到 html 文件中(我已经这样做了)。下一部分是使用保存的 html 文件从该站点提取文本。

我脑子里有这个算法步骤:

假设我们有一个 html 文件包含:

< something here >< start >< text > 你好 < text > 再见! <结束>

  1. 找到“”字符串,跳过“”字符串。 (这可以用 strstr() 来实现)
  2. 将指针指向“”的第一个“>”。 (使用 strchr()??)
  3. 检查字符串中的下一个字符是否为“<”:(忽略空格)a.) 如果是,将指针设置为下一个“>”。重复检查 (3)。b.) 如果不是,获取字符串直到下一个“<”。然后将其存储(附加)到一个大字符串。
  4. 最后,我想将字符串保存到 file.txt。 (fwite?或 fopen() 中的选项 a+)。

从逻辑上讲,这是正确的吧?作为编程的初学者,我总是会出错。我写了一个代码,但它总是导致段错误。

请帮助我/告诉我我的代码有什么问题:虚拟 - 包含 html 代码的文件

    #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <time.h>

int get_fileSize(FILE*);

int main(){

FILE *dummy = fopen("Dummy2","r");

int filesize = get_fileSize(dummy);
printf("Size of dummy = %d Bytes.\n", filesize);

char *newString = (char*)malloc((sizeof(char*))*(filesize));

if(dummy){
fread(newString, sizeof(char*), filesize, dummy);
}

char *tempString = (char*)malloc((sizeof(char*))*(filesize));
char *finalString = (char*)malloc((sizeof(char*))*(filesize));
finalString = "\0";

tempString = strtok(newString, "<");
do{

//printf("%s\n",tempString);
tempString = strtok(NULL, ">");

if(tempString[1]!='<'){
sprintf(finalString,"%s%s",finalString,tempString);
}else continue;

}while(*(newString++)!='\0');

puts(finalString);

return 0;
}

int get_fileSize(FILE *dummy){

int size;
struct stat file;
fstat(fileno(dummy), &file);
size = file.st_size;

return size;

}

最佳答案

第一个错误,看一眼你的代码就是你执行了 sizeof(char*) 而不是 char

char *newString = (char*)malloc((sizeof(char*))*(filesize));

应该是

char *newString = (char*)malloc((sizeof(char))*(filesize));

您不想在字符串中使用指针,而是使用 char

malloc 上面的代码并且从不调用 free(newString),这意味着你至少有 1 个泄漏,可能更多。

同样在这里:

fread(newString, sizeof(char*), filesize, dummy);

应该是:

fread(newString, sizeof(char), filesize, dummy);


finalString = "\n"; //reassigns the pointer to another string, doesn't write into allocated memory.

使用 strcpy 将字符串复制到分配的内存中。

关于c - 从 HTML 文件中提取纯文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15359449/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com