我正在写一个递归函数,它需要一个char数组,它代表一个数字,还有一个指向该数组中数字的指针。该函数的重点是像++运算符一样增加数字。但是,当我尝试数字'819'。它不会将其增加到'820',而是将其更改为'810'(它会递增最后一位数字,但不会执行我想要的递归)。有人可以帮我解决这个问题吗?谢谢。递归增量器
#include <stdio.h>
char* inc(char *num, char* p)
{
if(*p>='0' && *p<='8')
{
*p++;
}
else if (*p=='9')
{
*p = '0';
inc(num, --p);
}
return num;
}
main()
{
char x[] = "819";
printf("%s\n", inc(x, x+strlen(x)-1)); //pass the number and a pointer to the last digit
}
我以为* p ++会在p实际增加之前返回* p的值? – 2009-05-21 07:39:10
您的编辑错误。我的意思是你的优先权声明是正确的,但你没有考虑到后增加延迟到声明结束。 – paxdiablo 2009-05-21 07:41:47