0から始めるVisualStudio2022:ソフト開発塾

次に、ちょっと進化してファイルの読み込みプログラムを作成してみることに
前回の続きから
『ファイル』『追加』『新しいプロジェクト』
C++の空のプロジェクトを選んで


前回同様に
sample002のプロジェクトで
『プロジェクト』『新しい項目の追加』で、
sample002.cppを作成します。
すると、ソリューションエクスプローラーはこんな
ソースファイルに、sample002.cppが追加される。
sample002を『プロジェクト』『スタートアッププロジェクトに設定』で変更しておく
sample002.cppにプログラムをコーディング
昔のCでは当たり前の汚いソース
#include <stdio.h>
int main() {
	FILE *fp;
	if ((fp = fopen("sample002.cpp", "rb")) == NULL) {
		printf("Error : File Open\n");
		return 1;
	}else{
		int	mm_leng;
		unsigned char mm_read_buff[48][16];
		char mm_output_buff[16 + 16 * 3 + 16 + 7];
		mm_leng = fread(mm_read_buff, 1,sizeof(mm_read_buff), fp);
		mm_output_buff[16] = ' ';
		mm_output_buff[17] = '|';
		mm_output_buff[18] = ' ';
		int y = 0;
		int j=16;
		for (int i = 0; i < mm_leng; i += 16) {
			char *ptr = mm_output_buff+19;
			for ( j = 0; j < 16; j++) {
				if (y * 16 + j >= mm_leng)	break;
				unsigned short ch = (unsigned short) mm_read_buff[y][j];
				if (ch > 0x7e || ch < 0x20) {
					mm_output_buff[j] = '.';
				}else {
					mm_output_buff[j] = (char ) ch;
				}
				sprintf(ptr, "%02x ", ch);
				ptr += 3;
			}
			printf("%4x %s\n",y, mm_output_buff);
			y++;
		}
		if (j < 16) {
			for (; j < 16; j++) {
				mm_output_buff[j] = ' ';
			}
			printf("%4x %s\n",y, mm_output_buff);
		}
		fclose(fp);
	}
}
ビルドしてみる。
エラーが出て怒られた。
1>C:\softca\sample\sample002\sample002.cpp(11,60): warning C4267: '=': 'size_t' から 'int' に変換しました。データが失われているかもしれません。
1>C:\softca\sample\sample002\sample002.cpp(4,12): error C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>C:\softca\sample\sample002\sample002.cpp(27,5): error C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
コンパイラの警告 (レベル 3) C4996
エラーが出ないように、コンパイルの設定を変える
『プロジェクト』『プロパティ』の「C/C++」「全般」
SDLチェックを「はい」から「いいえ」に変える
ビルドしてみる。
今度はエラーが無い様だ。(エラーからワーニングに変わっている)
1>C:\softca\sample\sample002\sample002.cpp(11,60): warning C4267: '=': 'size_t' から 'int' に変換しました。データが失われているかもしれません。
1>C:\softca\sample\sample002\sample002.cpp(4,12): warning C4996: 'fopen': This function or variable may be unsafe. Consider using fopen_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
1>C:\softca\sample\sample002\sample002.cpp(27,5): warning C4996: 'sprintf': This function or variable may be unsafe. Consider using sprintf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
では、実行してみよう!!
『デバック』『デバックなしで開始』
中途半端なファイルダンプのプログラムが完成した。
Top OPEN READ CLOSE をAPI版に