我試圖解析一個網頁並從C中提取天氣信息(我知道,受虐狂)。將一個字符串中的strstr搜索複製到字符串本身
在該頁面中的其它東西,有這些行:
<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陣列讀它,我用一個循環逐行讀取數組,將其保存到臨時數組(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 ....
一切都很順利,除了月相和過去的24h雪線。
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:
非但沒有月相的:,我得到莫> \ n相:和而不是讓過去的24小時,雪:,我得到爪:24小時雪:。 奇怪的是,只有這些特定的字符串正在發生。 我不能將字符串上strstr的結果複製到字符串本身嗎?
strcpy(tmp,strstr(tmp,「」)+ 4);
這是犯罪行嗎?我在其他代碼中使用相同的方法,沒有任何問題。 如果我使用一箇中間變量(BUFF)來存儲檢索的strstr
} 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);
是否合法?
非常感謝您的快速回答。我會調查到memmove併發回。 – TeoBigusGeekus