我正在尝试计算一个char *,但是我的循环永远不会停止,直到它到达内存分配的最后一部分......?
这就是我的意思:
char* text1 = "Hello Guys!";
char* text2 = "i dont know why";
char* text3 = "Hello World";
int counter = 0;
for(char* temp = text1;temp != '\0';)
{
++temp; ++counter;
}
//then i printed Counter
但由于某种原因,我的计数器显示106506.
当我调试那些,在temp显示"!"然后它进入""它继续前进。 :(
并且经过几步之后,我的char *(temp)到达text2内存和text3内存。 "我不知道为什么"和#34; Hello World"也被计算在内。
答案 0 :(得分:1)
首先,即使编译器允许兼容性,你也不应该将字符串文字分配给char *
,其次你不需要额外的指针:
const char* text1 = "Hello Guys!";
int counter = 0;
for( ; text1[counter]; ++counter );
但最好使用strlen()
:
int counter = strlen( text1 );