nyororo-nのプロフィール
- ベストアンサー数
- 1
- ベストアンサー率
- 50%
- お礼率
- 63%
- 登録日2007/05/22
- エクセルにてセルへ数値を入力時、事前に入力していた値との差を別のセルに表示させたいです。
エクセルにてA1のセルに数値を入力した場合(事前に入力していた値-入力値)の差を隣のセル(B1)に表示し、再びA1に入力した数値の差をそのまた隣のセル(C1)に表示、再びA1に入力した数値の差をそのまた隣のセル(D1)に表示、再び… と繰返し入力した数値の差を右列へ順番に表示させていきたいのですが、どなたか方法を教えて下さい。 又、入力した時点の日付けも、差を表示させた下のセルに表示させる方法もお願いします。
- ベストアンサー
- オフィス系ソフト
- tetsushi22
- 回答数5
- InternetReadFileを使ったファイルダウンロード
下のようなプログラムは、httpサーバから特定のファイルを ダウンロードすることが目的です。 (※referer, file名は仮のものです。) 試しに動かしてみて、転送速度が比較的速い場合には、一応問題なく ダウンロードすることができたのですが、転送速度が遅い場合には、 ファイルサイズがどんどん膨れ上がってしまいます。 問題は、InternetReadFileでブロックされることがないからだと 推測しましたが、情報が少なく困っています。 転送速度が遅い場合にも正常にダウンロードするにはどうしたら よいでしょうか? #include <windows.h> #include <wininet.h> #include <stdio.h> #include <stdlib.h> bool GetHttpFile(){ HINTERNET hInternet; HINTERNET hFile; char Buf[1000]; /* バッファ */ DWORD ReadSize; BOOL bResult; wchar_t szHead[] = TEXT("Referer:http://aaa.com/\r\n\r\n"); // ヘッダにRefererを追加する FILE *fp; bool ret; /* 保存先ファイル作成/open */ fp = fopen("sample.zip", "wb"); if (fp == NULL){ /* ファイル作成/openに失敗 */ ret = false; }else{ /* ファイル作成/openに成功 */ /* WININET初期化 */ hInternet = InternetOpen( TEXT("Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)"), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); /* URLのオープン */ hFile = InternetOpenUrl( hInternet, TEXT("http://aaa.com/bbb.zip"), szHead, 0, INTERNET_FLAG_RELOAD, 0); /* オープンしたURLからデータを(1000バイトずつ)読み込む */ for(;;){ ReadSize = 1000; bResult = InternetReadFile( hFile, Buf, 1000, &ReadSize); /* 全て読み込んだらループを抜ける */ if(bResult && (ReadSize == 0)) break; /* ファイルに書き込み */ fwrite(Buf, sizeof(char), 1000, fp); } /* 後処理 */ InternetCloseHandle(hFile); InternetCloseHandle(hInternet); fclose(fp); ret = true; } return ret; } int main(){ if(GetHttpFile() == true){ printf("成功\n"); }else{ printf("失敗\n"); } return 0; }
- スペースで区切った3つの数値の大小を比較する
C初心者です。 たとえば「32 49 67」と入力させて、 その大小を比較するプログラムを書きたいんですが、 どうやって数値をひろっていいのか分かりません;; int型でたとえばiocharという変数を宣言して while( (iochar = getchar()) != EOF)とか書いてみても putchar(iochar)で表示することはできても 32、49、67を独立した数値として扱ってはくれないですよね……? さらに表示したあとプログラムが終了しないので exit()を使ってみたんですけど変化なくて; while(){}の中に入れちゃうとputchar(iochar)が最初の1文字を 表示しただけで終了しちゃうし……。 初歩の初歩で申し訳ないんですけど、何かいい解決策があれば 教えてもらえると助かりますorz