私はウェブページを解析し、C(マゾヒスト、私は知っています)を使ってそこから天気情報を抽出しようとしています。
そのページには、次のような行があります。
<dt>Chance of <span class='wx-firstletter'>rain</span>:</dt>
<dt>Wind:</dt>
<dt>Humidity:</dt>
<dt>UV Index:</dt>
<dt>Snowfall:</dt>
<dt>Sunrise:</dt>
<dt>Moonrise:</dt>
<dt>Moonphase:</dt>
<dt>Past 24-hr Precip:</dt>
<dt>Past 24-hr Snow:</dt>
<dt>Chance of <span class='wx-firstletter'>rain</span>:</dt>
<dt>Wind:</dt>
<dt>Humidity:</dt>
<dt>UV Index:</dt>
<dt>Snowfall:</dt>
<dt>Sunset:</dt>
<dt>Moonset:</dt>
<dt>Moonphase:</dt>
<dt>Past 24-hr Precip:</dt>
<dt>Past 24-hr Snow:</dt>
ページをダウンロードしてファイルに保存し、freadを使用して配列で読み取った後、ループを使用して配列を1行ずつ読み取り、一時配列(tmp)に保存します。文字列<dt>を含む行を処理する部分は次のとおりです。
} else if (strstr(tmp,"<dt>")) {
strcpy(tmp,strstr(tmp,"<dt>")+4);
strcpy(strstr(tmp,"</dt>")," \0");
if (strstr(tmp,"Chance of"))
strcpy(tmp,"Chance of precipitation: ");
fwrite(tmp,1,strlen(tmp),file_tod);
} else if ....
ムーンフェイズと過去24時間の雪線を除いて、すべてがうまくいきます。
Chance of precipitation:
Wind:
Humidity:
UV Index:
Snowfall:
Sunrise:
Moonrise:
Mo>
phase:
Past 24-hr Precip:
Paw: 24-hr Snow:
Chance of precipitation:
Wind:
Humidity:
UV Index:
Snowfall:
Sunset:
Moonset:
Mo>
phase:
Past 24-hr Precip:
Paw: 24-hr Snow:
Moonphase:を取得する代わりに、Mo> \ nphase:を取得し、Past 24h-Snow:を取得する代わりに、Paw:24-hr Snow:を取得します。奇妙なことは、これらの特定の文字列だけで起こっているということです。文字列のstrstrの結果を文字列自体にコピーできませんか?
strcpy(tmp、strstr(tmp、 "")+ 4);
これは問題のある行ですか?残りのコード全体で同じ方法を問題なく使用しています。strstr検索の結果を格納するために中間変数(buff)を使用する場合
} else if (strstr(tmp,"<dt>")) {
strcpy(buff,strstr(tmp,"<dt>")+4);
strcpy(strstr(buff,"</dt>")," \0");
if (strstr(buff,"Chance of"))
strcpy(buff,"Chance of precipitation: ");
fwrite(tmp,1,strlen(buff),file_tod);
} else if ....
すべて大丈夫です。
答えてくれてありがとう、そしてそれが非常に明白なら申し訳ありません。
編集:これを思いついた
} else if (strstr(tmp,"<dt>")) {
memmove(tmp,strstr(tmp,"<dt>")+4,strlen(tmp)-(strlen(strstr(tmp,"<dt>")+4)));
*(strstr(tmp,":")+1)=' ';
*(strstr(tmp,":")+2)='\0';
if (strstr(tmp,"Chance of"))
strcpy(tmp,"Chance of precipitation: ");
fwrite(tmp,1,strlen(tmp),file_tod);
それは合法ですか?