这个程序的主要问题是它不会计算字符串中的空格数,即使它遇到空格时它应该减少计数(它开始时计数设置为字符串的长度)。我没有正确检查空格(通过检查''),或者我的递归情况有问题吗?
# include <stdio.h>
# include <string.h>
// function to reverse string and count its length
int rPrint(char *str, int count)
{
if(*str)
{
if(*str != ' ')
rPrint(str+1, count);
else
rPrint(str+1, count - 1);
printf("%c", *str);
}
return count;
}
int main()
{
char string[28] = "";
int count = 0;
printf("Please enter a string: ");
gets(string);
count = rPrint(string, strlen(string));
printf("\nThe number of non-blank characters in the string is %d.", count);
}
答案 0 :(得分:2)
您没有使用递归调用的返回值。
if(*str != ' ')
rPrint(str+1, count);
else
rPrint(str+1, count - 1);
应该是
if(*str != ' ')
count = rPrint(str+1, count);
else
count = rPrint(str+1, count - 1);
答案 1 :(得分:1)
当你递归时,你扔掉了结果。尝试
count = rPrint(str+1, count);
等
更一般地说,作为一种调试方法,您应该学会将printf()
语句放入函数中以打印出他们正在做的事情....