void test_strlen_exc(char *str_buff)
{
int i = 0;
for (i=0; i<strlen(str_buff); i++)
{
printf("%c\r\n",str_buff++);
}
}
void main(void)
{
char str_buff[20] = {"abcdef123456"};
test_strlen_exc(str_buff);
}
输出的结果只有 abcdef ,后面的 123456 并没有打印出来;
这是因为 在 for (i=0; i<strlen(str_buff); i++) strlen(str_buff) 计算长度时 str_buff 是一个指针,str_buff++指针向后移动,导致长读不断的减少,所以只能有一半打印出来了;
修改为:
void test_strlen_exc(char *str_buff)
{
int i = 0;
int len = 0;
len = strlen(str_buff); //在for 循环之前先把长度获取,这样就不会出问题;
for (i=0; i<len ; i++)
{
printf("%c\r\n",str_buff++);
}
}