/* A utility function to reverse a string */
void reverse(char str[], int length)
{
int start = 0;
int end = length -1;
while (start < end)
{
swap((str+start), (str+end));
start++;
end--;
}
}
void swap(char *a, char *b)
{
char t;
t = *a;
*a = *b;
*b = t;
} //标準的交換兩個數的函數
char* itoa(int num, char* str, int base)
{
int i = 0;
bool isNegative = false;
/* Handle 0 explicitely, otherwise empty string is printed for 0 */
if (num == 0)
{
str[i++] = '0';
str[i] = '\0';
return str;
}
// In standard itoa(), negative numbers are handled only with
// base 10. Otherwise numbers are considered unsigned.
if (num < 0 && base == 10)
{
isNegative = true;
num = -num;
}
// Process individual digits
while (num != 0)
{
int rem = num % base;
str[i++] = (rem > 9)? (rem-10) + 'a' : rem + '0';
num = num/base;
}
// If number is negative, append '-'
if (isNegative)
str[i++] = '-';
str[i] = '\0'; // Append string terminator
// Reverse the string
reverse(str, i);
return str;
}
//main.c
#include <stdio.h>
...
char str[100];
int i = 10;
int num = 1567;
itoa(num, str, i);//傳回字元串“1567”
for(int i = 0; str[i] != '0/'; i++)
printf("%s", str[i])