自然言語処理について勉強しています。
Wikipediaのdumpデータから本文を抜き出して処理をしようと思ってます。
xmlの処理について試しているのですが、出力結果が想定とは全然違って困っています。
欲しい出力は,,<page>~~</page>の中身です。
segmetation faultが治らず困っています。
プログラミングはあまり得意ではないです。
以下にソースコードを貼り付けます。
#include <stdio.h> #include <stdlib.h> #include <string.h> int main (){ int p=0; char pb[5]={}; char line[BUFSIZ];//vsstudioにより1024と判明 FILE *fp =NULL; FILE *fw =NULL; fp=fopen("jawiki-20211220-pages-articles-multistream2.xml" , "r");//wiki char title[BUFSIZ]; //FILE *gt=fopen("list_1.txt","r"); fw = fopen("get_text_c.txt", "w");//書き込み先 if ((NULL == fp)||(NULL== fw )){ printf("abootしました。"); abort();//終了、ここがうまくいってない? } while (p = ftell(fp), fgets(line, BUFSIZ, fp)) { if (strstr(line, "<page>")){ pb[0]=p; } else if (strstr(line, "</page>")){ pb[1] = p - pb[0]+1; fseek(fp,-pb[1],SEEK_CUR); fprintf(stderr, "start=%d size=%d BUFSIZ=%d\n", pb[0], pb[1], BUFSIZ); // printf("%d",fp); fgets(line,pb[1],fp); //fwrite(pb, sizeof(size_t), 2, fw); // ... //fprintf(fw, "%hhd \t %hhd \n", pb[0], pb[1]); //... 名残 fprintf(fw,"%s \n",line); } } fclose(fw); fclose(fp); }
次に出力ファイル(5行ほど)です。
get_text_c.txt
1>chmmooepsrvwuo4n0ziki50nn5rvhj7</sha1> 2 3>chmmooepsrvwuo4n0ziki50nn5rvhj7</sha1> 4 5>chmmooepsrvwuo4n0ziki50nn5rvhj7</sha1> 6 7>chmmooepsrvwuo4n0ziki50nn5rvhj7</sha1> 8

回答1件
あなたの回答
tips
プレビュー