strlen関数を使わずに文字列の長さを調べる方法

今日、いくつかの興味深い投稿を見つけました。そのうちの 1 つは、strlen 関数を使用せずに文字列の長さを見つけるというものでした。

私が最初に考えたのは、変数をアキュムレータとして使用し、文字列をループすることでした。

#include <stdio.h>
int str(char *x)
{
	int l=0;
	while (*x++!=0)
	{
		l+=1;
	}
	return l;
}
int main()
{
	char x[100];
	printf("请输入一个字符串:\n");
	scanf("%s",x);
	printf("该字符串的长度为:%d\n",str(x));
	return 0;
}

その投稿を見て、再帰を使用して実装できると書いてあったので、すぐにクリックしました

#include <stdio.h>
int str(char *x)
{
	if(*x++ =='\0') return 0;
	else return ("%d",1+str(x++));
}
int main()
{
	char x[100];
	printf("请输入一个字符串:\n");
	scanf("%s",x);
	printf("长度为:%d\n",str(x));
	return 0;
}


実行してみてください。本当に効果があります。

少なくともコード量の点では、この再帰は前の再帰よりも優れていると思います。その投稿には多くの方法が記載されていますが、私は見たことがありません。考えたこともなかった、

http://bbs.csdn.net/topics/240070349これはその投稿へのリンクです。この投稿は比較的古いものですが、今でも十分役立つと思います。少なくとも私にとっては、素晴らしいアイデアです。



おすすめ

転載: blog.csdn.net/qq_31849705/article/details/52122975