質問編集履歴
1
追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -140,6 +140,73 @@
|
|
140
140
|
}
|
141
141
|
|
142
142
|
```
|
143
|
+
**追記:実行はできましたがidが表示されてません.**
|
144
|
+
```wiki_getter3_title.c(更新版)
|
145
|
+
#include <stdio.h>
|
146
|
+
#include <stdlib.h>
|
147
|
+
#include <string.h>
|
148
|
+
|
149
|
+
int main()
|
150
|
+
{
|
151
|
+
|
152
|
+
size_t p, pb[3];
|
153
|
+
char line[BUFSIZ];
|
154
|
+
char title[BUFSIZ];
|
155
|
+
char idnum[BUFSIZ];
|
156
|
+
FILE *fp = fopen("jawiki-20211220-pages-articles-multistream2.xml", "r");
|
157
|
+
FILE *fw = fopen("get_text_byte3_title_and_id.txt", "w");
|
158
|
+
if ((NULL == fp) || (NULL == fw))
|
159
|
+
abort();
|
160
|
+
while (p = ftell(fp), fgets(line, BUFSIZ, fp))
|
161
|
+
{
|
162
|
+
/*
|
163
|
+
if (strstr(line, "<page> "))
|
164
|
+
pb[0] = p;
|
165
|
+
else if (strstr(line, "</page>"))
|
166
|
+
{
|
167
|
+
pb[1] = p - pb[0];
|
168
|
+
printf("%zu\t%zu\n", pb[0], pb[1]);
|
169
|
+
fprintf(fw, "%zu\t%zu\n", pb[0], pb[1]); // ...
|
170
|
+
// fprintf(fw, "%d\t%d\n", pb[0], pb[1]); ... テキスト形式で観察可能
|
171
|
+
*/
|
172
|
+
char *p1, *p2;
|
173
|
+
p1 = strstr(line, "<title>");
|
174
|
+
p2 = strstr(line, "</title>");
|
175
|
+
|
176
|
+
if (p1 && p2)
|
177
|
+
{ // 1行に両方見つかった
|
178
|
+
p1 += strlen("<title>"); // <title>の次の位置
|
179
|
+
int len = p2 - p1;
|
180
|
+
int nowp = atoi(p1);
|
181
|
+
if (len >= 0)
|
182
|
+
{
|
183
|
+
memcpy(title, p1, len); //出力
|
184
|
+
title[len] = '\0'; // 終端記号を忘れずに追加
|
185
|
+
}
|
186
|
+
}
|
187
|
+
else
|
188
|
+
{
|
189
|
+
char *p3, *p4;
|
190
|
+
p3 = strstr(line, "<id>");
|
191
|
+
p4 = strstr(line, "</id>");
|
192
|
+
if (p3 && p4)
|
193
|
+
{
|
194
|
+
p3 += strlen("<id>"); // <id>の次の位置
|
195
|
+
int len = p4 - p3;
|
196
|
+
if (len >= 0)
|
197
|
+
{
|
198
|
+
memcpy(idnum, p3, len); //出力
|
199
|
+
idnum[len] = '\0'; // 終端記号を忘れずに追加
|
200
|
+
}
|
201
|
+
printf("title:%s\tID:%s\n", title, idnum);
|
202
|
+
fprintf(fw, "%s\t%s\n", line, idnum);
|
203
|
+
}
|
204
|
+
}
|
205
|
+
}
|
206
|
+
fclose(fw);
|
207
|
+
fclose(fp);
|
208
|
+
}
|
209
|
+
```
|
143
210
|
エラーについて.
|
144
211
|
---
|
145
212
|
タイトルは取得できましたが,idnumが表示されてないです.
|
@@ -147,13 +214,8 @@
|
|
147
214
|
|
148
215
|
最後の方を表示
|
149
216
|
|
150
|
-
|
217
|
+
|
151
|
-
|
218
|
+
|
152
|
-
title is J級潜水艦 (イギリス海軍)(ID:).
|
153
|
-
title is ランカウイ島(ID:).
|
154
|
-
title is 外山雄三(ID:).
|
155
|
-
title is 工藤順子(ID:).
|
156
|
-
process ok
|
157
219
|
```
|
158
220
|
~~ループの終了位置をミスしているのかな?~~
|
159
221
|
idnumが空っぽいですね.
|