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

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
eagle

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

#1

投稿記事 by eagle » 14年前

次のプログラムを実行して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;
}


アバター
ookami
記事: 214
登録日時: 15年前
住所: 東京都

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

#2

投稿記事 by ookami » 14年前

そこまでできているならfprintfなどでIpszSrcの内容を書き出すのがよいかと。

閉鎖

“C言語何でも質問掲示板” へ戻る