ディスクから jpg ファイルを読み込んで、char バッファにコピーしようとしています。問題は、バイトに NULL 文字があり、char バッファーを読み取るときに問題が発生することです。これは現在のコードです:
char* readImg(char* filename)
{
FILE * pFile;
char jpgBuffer[20048];
long lSize;
errno_t result = fopen_s (&pFile,filename,"rb");
if (result != 0) {
printf("Error \n");
}
fseek (pFile , 0 , SEEK_END);
lSize = ftell (pFile);
rewind (pFile);
result = fread (jpgBuffer,1,lSize,pFile);
fclose (pFile);
jpgBuffer[lSize] = '\0';
return jpgBuffer;
}
関数の呼び出しは次のとおりです。
char* img = readImg("img.jpg");
次に、base64 にエンコードする必要がありますが、strlen() を使用して画像バッファーのサイズを知りたい場合は、5 文字が「0」であるため、サイズが 4 になります。
イメージ バッファに NULL 文字が入らないようにするにはどうすればよいですか?