int を取り、左端の数字と残りの数字を別々に返す関数を作成しようとしています。
int idigitizer(int *number) {
int i = 1;
int head = 0;
int tmp = 0;
tmp = *number;
while (tmp > 9) {
if ((tmp/i) < 10) {
head = tmp/i;
*number = *number - (head*i);
return head;
} else {
i = i*10;
}
}
number = 0;
return tmp;
}
idigitizer は数値の左端の部分を返し、*number が残りを運びます。数値のすべての桁が分離されるまで idigitizer を呼び出し続けるループをメインに設定します。問題は、ゼロを処理する方法と、最後の桁で完了したときにこのプロセスを正しく終了させる方法がわからないことです。どんな助けでも大歓迎です。前もって感謝します。
編集:より明確にするために。数字の途中にある可能性のあるゼロが失われるのは望ましくありません。入力として番号 100047 を取得した場合、idigitizer に次の値を返します。
return - *number
100047
1 00047
0 0047
0 047
0 47
4 7
7