0

这个程序的主要问题是它不会计算字符串中空格的数量,即使它应该在遇到空格时减少计数(它开始时将 count 设置为字符串的长度)。我没有正确检查空格(通过检查''),还是我的递归案例有问题?

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

2 回答 2

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);
于 2012-11-18T04:25:10.567 回答
1

当你递归时,你会丢弃结果。尝试

count = rPrint(str+1, count);

等等

更一般地说,作为一种调试方法,您应该学习将printf()语句放入您的函数中以打印出它们正在做什么......

于 2012-11-18T04:25:33.610 回答