如何在不使用任何循环的情况下计算 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: 在使用预定义的库函数和它们的内部实现之前要小心。
所以我在练习我的 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: 在使用预定义的库函数和它们的内部实现之前要小心。