文字列をそのまま sample.txtにかくプログラムを作っています。
index.txtには54 45 53 54 45 53 54 0Aと書いてあります。
Visual C++でCtrl+F5を押してビルドし、実行したのですが
sample.txtには
54 45 53 54 45 53 54 0A
文字化けした文字列
C:\Windows\system32\IMM32.DLL
文字化けした文字列
C:\Windows・・・省略
文字化けした文字列
C:\Windows・・・省略
./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ・・・省略
・
・
・
・
・
省略
と表示されます。
ちなみにkibou.exeをクリックし直接実行すると
「以下のコンポーネットを参照できませんでした。」
と出てきます。
これとは何か関係があるのでしょうか。
ソースコードは以下に記載します。
ご意見をお聞かせてください。
#include <windows.h>
#include <wininet.h>
#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
#pragma comment(lib,"wininet.lib")
int WRITEFILE(char ptr[])
{
FILE *fp;
char *filename = "sample.txt";
/* ファイルのオープン */
if ((fp = fopen(filename, "b")) == NULL)
{
return(-1);
}
/* ファイルにデータを書き込む */
fwrite(ptr, sizeof(int), 4, fp);
/* ファイルのクローズ */
fclose(fp);
return(0);
}
int main(void)
{
HINTERNET hInternet;
HINTERNET hFile;
char Buf[10000];
DWORD ReadSize;
BOOL bResult;
/* WININET初期化 */
hInternet = InternetOpen(
"WININET Sample Program",
INTERNET_OPEN_TYPE_PRECONFIG,
NULL,
NULL,
0);
/* URLのオープン */
hFile = InternetOpenUrl(
hInternet,
"http://s1.muryo.etowns.net/~yamada_mama_papa/index.txt",
NULL,
0,
INTERNET_FLAG_RELOAD,
0);
/* オープンしたURLからデータを(10000バイトずつ)読み込む */
for(;;)
{
ReadSize = 10000;
bResult = InternetReadFile(
hFile,
Buf,
10000,
&ReadSize);
/* 全て読み込んだらループを抜ける */
if(bResult && (ReadSize == 0))
{
break;
}
Buf[ReadSize] = '\0';
printf("%s", Buf);
WRITEFILE(Buf);
if(WRITEFILE(Buf)==-1)
{
puts("ファイル書き込みに失敗しました。");
break;
}
}
/* 後処理 */
InternetCloseHandle(hFile);
InternetCloseHandle(hInternet);
return(0);
}