用递归求解字符串的长度

#include<stdio.h>
int count=0;
char str[1000];
int dg(char* str){
if(*str=='\n') return count;
else{
if(*str!=' ') count++;
}
dg(str+1);
}
int main(void){
gets(str);
printf("%d",dg(str));
}

gets函数不会读入字符串末位的'\n,将原函数改为如下形式

#include <stdio.h>
int count = 0;
char str[1000];
int dg(char *str)
{
    if (*str == '\0')
        return count;
    else
    {
        if (*str != ' ')
            count++;
    }
    dg(str + 1);
}
int main(void)
{
    gets(str);
    printf("%d", dg(str));
}

img

if(*str!=' ')这个if没什么用,
if(*str=='\n') 把\n改成\0
代码修改如下:

#include<stdio.h>
int count=0;
char str[1000];
int dg(char* str)
{
    if(*str=='\0') 
        return count;
    else
    {
        count++;
        dg(str+1);
    }
    
}
int main(void)
{
    gets(str);
    printf("%d",dg(str));
}

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632