• ベストアンサー

文字列

winInet.hでInternetReadFile関数を使って ネット上のHTMLファイルをダウンロードした時 「<li> ABC</li>」 このようなソースを含んだファイルを読み込んだ場合 <li>と</li>を無視して「ABC」だけ取り出す、もしくは<li></li>の部分だけを無視するような方法は無いものでしょうか。 ABCという文字はそのページで毎日変わることを想定して作っているので難しくて困っています。 どなたか分かる方教えてください よろしくお願いします。

  • BPG
  • お礼率60% (82/135)

質問者が選んだベストアンサー

  • ベストアンサー
  • ttyp03
  • ベストアンサー率28% (277/960)
回答No.1

<li>と</li>に囲まれた文字列を取り出すプログラムを作ってみました。 以下、変数 buff に "<li>ABC</li>" といった文字列が格納されていると仮定します。 #define LI_ "<li>" #define _LI "</li>" char work[1024]; char *p1, *p2; p1 = strstr( buff, LI_ ); p2 = strstr( buff, _LI ); memset( work, 0x00, sizeof( work ) ); strncpy( work, p1 + strlen( LI_ ), p2 - p1 - strlen( LI_ ) ); これで変数 work に取得できるはずです。

BPG
質問者

お礼

早速作ってみた所、無事取得することが出来ました。 こんな方法があったとは思いもしませんでした! 本当にありがとうございます。

関連するQ&A

  • WinINet関数について質問です。

    WinINet関数を使いVCプログラムしています。 HTMLをダウンロードしてきて、情報を解析しているのですが。 InternetOpen InternetOpenUrl ↓ InternetReadFile 手順で、HTMLの所得はできるのですが、 ユーザー認証がいるサイトの情報を取る方法がわかりません。 (例えば:mixi,facebookなど) WinINet関数を使用してサイトにログインしてから、 指定のURLのHTMLを取得する様な感じだと思っているのですが、やり方がわかりません。 参考になる、サイト等知っている方がいましたら、教えて頂けると嬉しいです。

  • 【C&C++】文字コードEUCをShift-JISに変換したい

    WinInetで指定したURLのHTMLを表示するコンソールプログラムを作成したのですが、EUCで書かれたWebページが文字化けをしてしまいます。 Shift-JISで書かれているWebページは特に問題なく、自分もEUCからShift-JISに変換したいと考えています。しかし、色々と参考書やWebなどを調べてみたのですが、自分には少し難しすぎてより分かりやすい説明を求めています。 データの読み出しはInternetReadFileを使用しています。以下がそのソースです。 while (1) { InternetReadFile(hUrl, szBuf, (DWORD)sizeof(szBuf) - 1, &dwRead); szBuf[dwRead] = '\0'; if (dwRead == 0) break; str = str + szBuf; } どうかご回答よろしくお願いします。

  • 【C&C++】EUC_JPをSHIFT-JISに変換したい

    WinInetで指定したURLのHTMLを表示するコンソールプログラムを作成したのですが、EUC_JPで書かれたWebページが文字化けをしてしまいます。 SHIFT-JISで書かれているWebページは特に問題なく、自分もEUC_JPからSHIFT-JISに変換したいと考えています。しかし、色々と参考書やWebなどを調べてみたのですが、自分には少し難しすぎてより分かりやすい説明を求めています。 データの読み出しはInternetReadFileを使用しています。以下がそのソースです。 while (1) { InternetReadFile(hUrl, szBuf, (DWORD)sizeof(szBuf) - 1, &dwRead); szBuf[dwRead] = '\0'; if (dwRead == 0) break; str = str + szBuf; } どうかご回答よろしくお願いします。

  • EXCEL2003 指定した位置の文字列を取り出す

    "ABC,DEFG,H,IJ,KLMNO,PQ,RSTU"というような文字列に対して、「1」ならば"ABC"を、「5」ならば"KLMNO"を取り出したいと思います。 そういう関数があったと思うのですが思い出せません。 どなたか教えてください。 よろしくお願いします。

  • mainから渡した文字列を関数内で書き換え

    非常に基礎的な質問で申し訳ないのですが mainから渡した文字列を関数内で書き換えることができません。 int型の整数やchar型一文字はできるのですが。。。 例えば以下のようなソースでmainのABCをDEFに書き換えたいとき どのようにすればいいのでしょうか。 (関数の戻り値で変更という方法以外で) 以下のソースでは値は書き換わりませんでした。 void func(char *str2) { str2 = "DEF"; } int main() { char str1[20] = "ABC" printf("%s", str1); //ABC func(str1); printf("%s", str1); //DEFになるようにしたい }

  • Apache上での大文字小文字の識別回避

    いつもお世話になっております。 現在、Windows環境で使用されていたWebコンテンツ(HTMLと画像)をCentOS上のApacheに移す作業を予定しています。 HTMLファイルのソースに記述されている参照ファイル名(例:abc.JPG)と実際のファイル名(例:abc.jpg)の大文字小文字が一致しておらず、Apache上では正常にWebページが表示されません。(画像が表示されるべき箇所にバッテンマークが表示される状態です。) ※URL上の大文字小文字は特に問題が起きていません。 Windowsでは大文字小文字の識別がなく、こうしたHTMLファイルの書き方になっているかと思いますが、Apache上で大文字小文字を識別せずWebページを表示することは可能でしょうか? mod_spellingは近しい機能のようにも思えましたが、URLの補正とあるので本件の場合どうなるのかな、と。。。 なにぶん、不慣れな分手間取っておりまして、皆様のお知恵を拝借させていただければ幸いです。

  • HTTPで返されるファイル名の取得について

    こんにちは。 現在、VBで、WEBからファイルをダウンロードするプログラムを作成しています。 ダウンロードしたいファイルのURLを指定し、wininetのInternetReadFileで読み込んでいるのですが、下記 http://www.hoge.com/index.php?id=1234 のように、phpやaspからファイル名を返されるようなURLの場合、どうやって返されるファイル名を取得するのでしょうか? (wininetのHttpQueryInfoでは、ファイル名は取得できないようなのですが...)

  • Wininetでのプロキシとポート指定によるファイルのダウンロード

    Wininetの下記の関数の組み合わせで、Webサーバからファイルをダウンロードしています。 InternetOpen→InternetOpenUrl→InternetReadFile(VB6.0) プロキシなしでやっているときは、問題なかったのですが、プロキシとポートを 指定したところ、うまくダウンロードできなくなりました。 InternetOpenで、プロキシの設定は行ったのですが、ポートの指定ができずに 困っています。ポートは一般的な80,8080ではなく特殊な設定になっています。 InternetConnectでポートの指定ができるようですが、うまくいきません。 どなたかお教え下さい。宜しくお願い致します。

  • InternetReadFileで読み込んだECUサイトの文字化け?

    InternetOpen→InternetOpenUrl→InternetReadFileでHTMLソースを読み込んでエディットボックスに出力すると、EUCのサイトだけ文字化けします。この場合EUCからS-JISに変換して出力するのが一般的なのでしょうか? また、読み込んだHTMLソースから文字列を抜き出したりしたいのですが、この場合もEUCからS-JISに変換してから扱うのでしょうか? 初心者ですがよろしくお願いします。 VC++6.0です。

  • 画面から文字列を取得してその文字列の位置を知る方法

    こんばんは。 質問させてください。 画面から文字列を選択して、取得します。(これは出来ました。) その文字列がHTMLソースファイルの どの位置のものか取得する方法はありますでしょうか? ○番目の「こんばんは」を画面から取得した時に 同じ文字列があっても、○番目の位置が取得出来る方法なのですが・・・ ---- <HTML><HEAD></HEAD> <BODY> おはよう、こんばんは。 さようなら、ありがとう。 しつれいしました、おはよう、こんばんは。 こんばんは、さようなら。 さようなら </BODY> </HTML> ----

専門家に質問してみよう