读书人

获得字符串或数组长度有关问题

发布时间: 2012-01-12 22:11:58 作者: rapoo

获得字符串或数组长度问题
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 '结尾的,如果不懂,回去看书。

读书人网 >VC/MFC

热点推荐