字符串或字符数组大小问题

noness 2007-05-08 11:14:21
如题:
有一函数
A(char *str)
{
int b = str的长度
}
我如何得知这个传进来的字符串或字符数组的长度
...全文
458 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
wm_cindy 2007-05-08
  • 打赏
  • 举报
回复
#include <iostream.h>
#include <string.h>

int num(char *ptr)
{
int bb = strlen(ptr);
return bb;
}

int main()
{
char *p= new char[100];
p = "string";
int b = num(p);
cout<<b<<endl;
return 0;
}
不好意思阿,刚才错啦,这个是按照楼上的方法写的,结果是6,应该是对的,你再看看吧
xlbdan 2007-05-08
  • 打赏
  • 举报
回复
char *bmpdata=new char[10];


void A(char *str)
{
int b = strlen(str);
}
void main()
{
strcpy(bmpdata,"hello");
A(bmpdata);
}

运行没问题啊
noness 2007-05-08
  • 打赏
  • 举报
回复
如用sizeof(数组名)/sizeof(元素类型) 得到的是str指针长度为4,并非str指针指向的字符串或字符数组长度。
我想要知道str指针指向的字符串或字符数组长度
wm_cindy 2007-05-08
  • 打赏
  • 举报
回复
计算数组长度:sizeof(数组名)/sizeof(元素类型)
noness 2007-05-08
  • 打赏
  • 举报
回复
完整代码如下:
char *bmpdata = new char[100];
.
.
.
此时bmpdata以有确定值
.
.

A(char *str)
{
int b = strlen(str);
}
A(bmpdata);

编译出现以上错误信息
noness 2007-05-08
  • 打赏
  • 举报
回复
完整代码如下:
char *bmpdata = new char[100];
.
.
.
此时bmpdata以有确定值
.
.

A(char *str)
{
int b = strlen(str);
}
A(bmpdata);
noness 2007-05-08
  • 打赏
  • 举报
回复
不行啊 提示错误
错误信息:strlen : cannot convert parameter 1 from 'char *' to 'const char *'
xlbdan 2007-05-08
  • 打赏
  • 举报
回复
如果是字符串,
int b = strlen(str)即可

如果是字符数组,
那要考虑一下是否该数组用\0作为结束,如果是,就仍然int b = strlen(str)即可
如果不是,那没办法取得该长度了
next163 2007-05-08
  • 打赏
  • 举报
回复
strlen(str),顺便提一下,这个函数要包含<cstring>头文件(C++),得到的是字符串字符的数目(不包括结尾的‘\0')。
jlxys 2007-05-08
  • 打赏
  • 举报
回复
strlen(str)
noness 2007-05-08
  • 打赏
  • 举报
回复
还是没解决 给出完整代码
char *bmpdata; 全局变量
void CFileView::OnFile()
{

FileWrite(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::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 *'
应该怎么改下

65,213

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧