私は、数値を表す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の値を返すと思ったのですが? –
編集が間違っています。私はあなたの優先権声明が正しいことを意味するが、ポストインクリメントが声明の終わりまで延期されていることを考慮していない。 – paxdiablo
私はコードビットをあまりにも分割しました。私は同じことを編集しました。 @Pax、ありがとう –