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 vps云服务器 *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++);
? ? }
}
?
?
?
76718052