简单char*长度问题?赚分了! 定义char* x; x="12345678"; int k=sizeof(x);得到k=4; 如何得到x的确切长度8? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 定义的不对,char *x;char a[] ="12345678";x=a;int k=sizeof(x);这样就会得到8了,错误因为你的x没有分配存贮空间 char* x;x="12345678";CString str;str.Format("%s", x);int k=str.GetLength(); char* x = "12345678";CString str;strcpy(str, x);int k=str.GetLength(); char x[] = "12345678" ; 我的程序只能仅使用char* 也就是不能通过char[]过渡传值char* x=某个外部数值;(不确定长度)如何得到‘某个外部数值’的长度? 指针类型长度为4sizeof(char *)=sizeof(CString)=4如果想得到8,可: const char *a="12345678"; CString tmp(""); tmp=a; int i=tmp.GetLength(); TRACE("%d",i); char * pchar;pchar="012345607";for(int ilen=0;pchar[ilen]!=0;ilen++); printf("%d \n",ilen); 要想得到一个外部char*的长度是很困难的,方法就是使用strlen(char*),但这种方法只能得到以'\0'结束的字符串的长度,而不能得到你实际分配给这个char*的内存的长度,并且,如果char*中存放的是自定义数据(也就是0可能是合法数据)的时候,这个方法就不能用了。建议增加一个参数来表示你传递的char*的可用内存长度。 定义char* x; x="12345678"; int k=sizeof(x);得到k=4; 如何得到x的确切长度8?实际上x = "12345678"是将字符串常量的地址赋给了x, 所以你应该这样定义x:const char *x = "12345678";另外:sizeof是获得char类型的长度,而不是字串的长度,应该如下:int k= strlen(buf); windows socket到底都有什么版本 调用C运行时库没有要求CRT_Initialize()之类的函数,为什么COM要CoInitialize() 视频播放器的原理是什么? 用sock接收不到的包可以用winpcap接收到,why? 环形缓存区能在数据流中插入回车换行吗? Windows对话框? 动态分配内存 如何将控件从禁用变为可用?我找了好久,帮帮忙 需要 GDI+ 文档,中英文均可,但是要能离线看 一个vc6.0++新手的问题 ,挺简单!!! 用Ado可以查询master中的表吗? Visual C++哪里有下
char *x;
char a[] ="12345678";
x=a;
int k=sizeof(x);
这样就会得到8了,
错误因为你的x没有分配存贮空间
x="12345678";
CString str;
str.Format("%s", x);
int k=str.GetLength();
CString str;
strcpy(str, x);
int k=str.GetLength();
CString tmp("");
tmp=a;
int i=tmp.GetLength(); TRACE("%d",i);
pchar="012345607";
for(int ilen=0;pchar[ilen]!=0;ilen++);
printf("%d \n",ilen);
x="12345678";
int k=sizeof(x);
得到k=4; 如何得到x的确切长度8?实际上x = "12345678"是将字符串常量的地址赋给了x, 所以你应该这样定义x:
const char *x = "12345678";
另外:sizeof是获得char类型的长度,而不是字串的长度,应该如下:
int k= strlen(buf);