void written_amount(unsigned int amount, char *buffer) {
const char *digits[] = {
"ZERO", "ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX", "SEVEN", "EIGHT", "NINE"
};
const char *teens[] = {
"TEN", "ELEVEN", "TWELVE", "THIRTEEN", "FOURTEEN", "FIFTEEN", "SIXTEEN", "SEVENTEEN", "EIGHTEEN", "NINETEEN"
};
const char *tens[] = {
"", "", "TWENTY", "THIRTY", "FORTY", "FIFTY", "SIXTY", "SEVENTY", "EIGHTY", "NINETY"
};
const char *powers[] = {
"", "THOUSAND", "MILLION", "BILLION"
};
if (amount == 0) {
strcpy(buffer, "ZERO");
return;
}
int index = 0;
while (amount > 0) {
if (amount % 1000 != 0) {
int part = amount % 1000;
int hundreds = part / 100;
int tens_and_ones = part % 100;
if (hundreds > 0) {
strcat(buffer, digits[hundreds]);
strcat(buffer, " HUNDRED ");
}
if (tens_and_ones >= 10 && tens_and_ones <= 19) {
strcat(buffer, teens[tens_and_ones - 10]);
} else {
int tens = tens_and_ones / 10;
int ones = tens_and_ones % 10;
if (tens > 0) {
strcat(buffer, tens[tens]);
strcat(buffer, " ");
}
if (ones > 0) {
strcat(buffer, digits[ones]);
strcat(buffer, " ");
}
}
strcat(buffer, powers[index]);
strcat(buffer, " ");
}
amount /= 1000;
index++;
}
// 移除最后一个空格
buffer[strlen(buffer) - 1] = '\0';
}