如何在不使用任何循环的情况下计算 char 数组中 char 的长度?

How can I count the length of char in a char array without using any loop?

所以我在练习我的 c 语言,我需要如何计算字符数组中字符的长度,因为当我使用 sizeof() 时,我得到了数组的整个长度..虽然我可以使用“for循环”,但我不能在那个问题中使用它,所以有没有其他方法可以做到这一点..

#include <stdio.h>
#include<string.h>
#include<math.h>

int main()
{
    int i,N;
    char a[20];
    printf("enter the string");
    scanf("%s",a);
    puts(a);
    N = sizeof(a); 
    printf("%d",N);
    return 0;
}

输出:-

enter the string                                                                                     
helloguys                                                                                            
helloguys                                                                                            
20     

strlen()函数将帮助您解决problem.Don在使用strlen()函数之前不要忘记添加#include<string.h>

这可以通过两种方式实现:

1) 使用string.h中定义的strlen()函数:

#include <stdio.h>
#include<string.h>
#include<math.h>

int main()
{
    int i,N;
    char a[20];
    printf("enter the string");
    scanf("%s",a);
    puts(a);
    N = strlen(a); 
    printf("%d",N);
    return 0;
}

请注意,strlen() 在内部使用循环。根据 string.h 库中 strlen() 的定义,按照 cppreference.com 的可能实现是:

std::size_t strlen(const char* start) {
    const char* end = start;
    while(*end++ != 0);
    return end - start - 1;
}

因此不直接或间接使用循环的第二种方式可以递归

2) 使用递归:

#include <stdio.h>
#include<string.h>
#include<math.h>

int LengthofString(char *string) 
{  
    if (*string == '[=12=]')  
        return 0; 
    else
        return 1 + LengthofString(string + 1); 
}

int main()
{
    int i,N;
    char a[20];
    printf("enter the string");
    scanf("%s",a);
    puts(a);
    N = LengthofString(a);
    printf("%d",N);
    return 0;
}

PS: 在使用预定义的库函数和它们的内部实现之前要小心。