今日、いくつかの興味深い投稿を見つけました。そのうちの 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これはその投稿へのリンクです。この投稿は比較的古いものですが、今でも十分役立つと思います。少なくとも私にとっては、素晴らしいアイデアです。