WWWサーバー上にあるjpgファイルを指定してそれをダウンロードするプログラムをつくっています。
jpgファイルが作成されることはされるのですが、中身をみることができない状態になってしまいます。
どこが悪いのかわかる方がおられましたらご教授お願いします。
<ソースコード>
#include <windows.h>
#include <stdio.h>
#include <wininet.h>
int main(void)
{
HINTERNET hInet, hUrl;
char szBuf[128], szUrl[128], *lpszSrc;
DWORD dwRead, dwTotal = 0;
HGLOBAL hMem;
FILE *file;
printf("URL---- ");
gets(szUrl);
hInet = InternetOpen(TEXT("neko"), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
if(hInet == NULL){
perror("オープンエラー\n");
return -2;
}
hUrl = InternetOpenUrl(hInet, szUrl, NULL, 0, 0, 0);
if(hUrl == NULL){
perror("URLオープンエラー\n");
return -3;
}
hMem = GlobalAlloc(GHND, 1);
lpszSrc = (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+1, GMEM_MOVEABLE);
lpszSrc = (char*)GlobalLock(hMem);
strcat(lpszSrc, szBuf);
}
if((file = fopen("test.jpg", "wb")) == NULL){
printf("ファイルオープンエラー\n");
goto end;
}
while(dwTotal){
fputc(*lpszSrc, file);
lpszSrc++;
dwTotal--;
}
fclose(file);
end:
GlobalUnlock(hMem);
GlobalFree(hMem);
InternetCloseHandle(hUrl);
InternetCloseHandle(hInet);
return 0;
}
<環境>
Windows Vista
VC++ 2005 EE
お礼
迅速なご回答ありがとうございます。 無事問題を解決することができました! 適切なご指摘、とても助かりました。