关于指针的c语言问题


#include<stdio.h>
funch(char str[])
{
    int num = 0;
    while (*(str + num) != '')
        num++;
    return num;
}
void main()
{
    char str[10], * p = str;
    gets(p);
    printf("%d", funch(p));
}

这是一道选择题,题目是:如果从键盘上输入12345,那么输出结果为多少。
如果是按照代码中printf输出的话,则是252或者353之类的数字,但是选择题的选项也是只有个位数。自己去计算num,好像是算出来6的(对吗)。想问一下,为什么输出的结果为三位数。这个题目是出错了吗,题目问的输出结果是printf的输出吗

img


注意指针str,每次+1然后取对应位的值是取字符串对应下标字符,然后就是基础的while逻辑了

第6行 while (*(str + num) != '') 里面的字符是什么,空格还是空字符‘\0’

应该是题目有错。
int funch(char str[]) //少了int
{
    int num = 0;
    while (*(str + num) != '\0') // 这里若字符为'\0',则函数是计算字符串长度的。
        num++;
    return num;
}
可以查看手册:c语言--指针声明 中的内容