我正在尝试从磁盘读取 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() 知道图像缓冲区的大小,我得到的大小是4,因为5 个字符是“0”。
如何避免 NULL 字符进入图像缓冲区?