如何计算char *?

时间:2016-08-15 13:51:57

标签: c char

我正在尝试计算一个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"也被计算在内。

1 个答案:

答案 0 :(得分:1)

首先,即使编译器允许兼容性,你也不应该将字符串文字分配给char *,其次你不需要额外的指针:

const char* text1 = "Hello Guys!";

int counter = 0;
for( ; text1[counter]; ++counter );

但最好使用strlen()

int counter = strlen( text1 );