ページ 11

webのソースコードを書き込む

Posted: 2011年10月25日(火) 20:03
by eagle
次のプログラムを実行してwebサイトのソースをテキスト(メモ帳)に
書きこむ処理をしたいと考えております。(.txt形式で)
書き込みの処理を追加するにはどうすればいいのでしょうか?
どなたか教えて下さい!
よろしくお願いします。

コード:


//webページのソース表示プログラム
//ファイル名:readhtml.c

#include<windows.h>
#include<stdio.h>
#include<wininet.h>

int main()
{
	HINTERNET hInet, hUrl;
	char szBuf[128],szUrl[128],*IpszSrc;
	DWORD dwRead,dwTotal=0;
	HGLOBAL hMem;

	//目的のURLの入力
	printf("URL-->");
	gets(szUrl);

	//インターネット(winInet)開始
	hInet=InternetOpen("daredemo-wakaru",
               INTERNET_OPEN_TYPE_PRECONFIG,
               NULL,NULL,0);
	if(hInet=NULL){
		perror("オープンエラー\n");
		return -2;
	}
	//HTTPセッションの開始,指定のURLオープン
	hUrl=InternetOpenUrl(hInet,szUrl,NULL,0,0,0);
	if(hUrl==NULL){
		perror("URLオープンエラー\n");
		InternetCloseHandle(hInet);
		return -3;
	}

	//IpszSrcに1バイトだけ確保する
	hMem=GlobalAlloc(GHND,1);
	IpszSrc=(char*)GlobalLock(hMem);
	
	//読みだすデータがなくなるまで読みだす
	while(1){
		InternetReadFile(hUrl,szBuf,(DWORD)sizeof(szBuf)-1,&dwRead);
		szBuf[dwRead]='\0';


		//読みだすデータがなくなったらループ終了
		if(dwRead==0)
        		break;
		

		//必要バイト数の計算
		dwTotal+=dwRead;
		

		//確保領域の大きさ変更
		hMem=GlobalReAlloc(hMem,dwTotal,GMEM_MOVEABLE);
		if(hMem==NULL){
			perror("再アロケート失敗\n");
		}
		IpszSrc=(char*)GlobalLock(hMem);
		if(IpszSrc==NULL){
			perror("メモリ確保に失敗\n");
			break;
		}
		strcat(IpszSrc,szBuf);
	}

	//ソースの表示
	printf("%s\n",IpszSrc);
	

	//メモリの解放
	GlobalUnlock(hMem);
	GlobalFree(hMem);
	
	//インターネットハンドルの解放
	InternetCloseHandle(hUrl);
	InternetCloseHandle(hInet);

	return 0;
}


Re: webのソースコードを書き込む

Posted: 2011年10月26日(水) 12:12
by ookami
そこまでできているならfprintfなどでIpszSrcの内容を書き出すのがよいかと。