为什么我用递归求解字符串长度的结果乱码?我这个程序哪里错了?

#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));
}

不伦不类,理解错误

主要问题是字符串结尾判断 把*str=='\n'改为 *str=='\0' 就可以了,修改了如下:


#include<stdio.h>

    int count=0;
    char str[1000];
    
int dg(char* str){
    if(*str=='\0') {
    //    printf("before return count=%d\n",count);
        return count;    
    }
    else{
        if(*str!=' ') {
            count++;
        //    printf("*str=%c,count=%d\n",*str,count);
        }
            
    }
    dg(str+1);
}
int main(void){
    gets(str);
    printf("%d",dg(str));
}