获得字符串或数组长度有关问题
获得字符串或数组长度问题
char *bmpdata; 全局变量
void CFileView::OnRfile()
{
//function 2
CFile file( "333.bmp ",CFile::modeRead|CFile::typeBinary);
len = file.GetLength();
bmpdata = new char[len+1];
bmpdata[len] = 0;
//int Length = strlen(bmpdata); 如在这里获取的话 是正常的为27653
file.Read(bmpdata,len);
file.Close();
}
void CFileView::OnFile()
{
FileWrite(bmpdata);
}
void CFileView::FileWrite(char *data)
{
//int Length = strlen(bmpdata); 如在这里获取的话同样是5
int Length = strlen(data); // 跟踪这里的Length的值为5 没有达到目的
CFile file( "222.bmp ",CFile::modeCreate|CFile::modeWrite|CFile::typeBinary);
file.Write(data, Length);
file.Close();
}
如定义bmpdata 为 unsigned char* 显示错误:
strlen : cannot convert parameter 1 from 'unsigned char * ' to 'const char * '
应该怎么改下
------解决方案--------------------
是不是你读取的文件里面有‘\0’
你可以在
file.Read(bmpdata,len);
后面再加
int Length = strlen(bmpdata);
判断一下
------解决方案--------------------
void CFileView::FileWrite(char *data ,int length)
再传一个数组大小就好了~
------解决方案--------------------
strlen是用于字符串的,而你从文件中读取的数据显然不是字符串,而是二进制的。
请记住,字符串都是以 '\0 '结尾的,如果不懂,回去看书。
char *bmpdata; 全局变量
void CFileView::OnRfile()
{
//function 2
CFile file( "333.bmp ",CFile::modeRead|CFile::typeBinary);
len = file.GetLength();
bmpdata = new char[len+1];
bmpdata[len] = 0;
//int Length = strlen(bmpdata); 如在这里获取的话 是正常的为27653
file.Read(bmpdata,len);
file.Close();
}
void CFileView::OnFile()
{
FileWrite(bmpdata);
}
void CFileView::FileWrite(char *data)
{
//int Length = strlen(bmpdata); 如在这里获取的话同样是5
int Length = strlen(data); // 跟踪这里的Length的值为5 没有达到目的
CFile file( "222.bmp ",CFile::modeCreate|CFile::modeWrite|CFile::typeBinary);
file.Write(data, Length);
file.Close();
}
如定义bmpdata 为 unsigned char* 显示错误:
strlen : cannot convert parameter 1 from 'unsigned char * ' to 'const char * '
应该怎么改下
------解决方案--------------------
是不是你读取的文件里面有‘\0’
你可以在
file.Read(bmpdata,len);
后面再加
int Length = strlen(bmpdata);
判断一下
------解决方案--------------------
void CFileView::FileWrite(char *data ,int length)
再传一个数组大小就好了~
------解决方案--------------------
strlen是用于字符串的,而你从文件中读取的数据显然不是字符串,而是二进制的。
请记住,字符串都是以 '\0 '结尾的,如果不懂,回去看书。