用循环的方式求字符数组长度

问题遇到的现象和发生背景

用循环的方式求字符数组长度

#include 
int main()
{
    char str[20] = {'h', 'e', 'l', 'l', 'o'};
    int len;
    for (len = 0; str[len] == '\0'; len++)
    {
        ;
    }
    printf("%d", len);
    return 0;
}

运行结果及报错内容

0%
不是5

我的解答思路和尝试过的方法

用while循环

char str[20] = {'h', 'e', 'l', 'l', 'o'};
int len = 0;
while (str[len] != '\0')
{
    len++;
 }
printf("%d", len);

运行结果及报错内容

运行成功

我想要达到的结果

用for循环也能打印出字符串数组长度

for (len = 0; str[len] == '\0'; len++)
改成
for (len = 0; str[len] != '\0'; len++)