im having trouble understanding the code in itoa's do while loop. why is this finding the remainder of dividing n by 10 and adding '0'? and the condition while((n/=10)!=0). whats happening here?
Code:
/* reverse: reverse string s in place */
void reverse(char s[])
{
int c,i,j;
for(i = 0,j = strlen(s)-1; i < j; i++,j--)
{
c = s[i];
s[i] = s[j];
s[j] = c;
}
}
/* itoa: convert n to characters in s */
void itoa(int n,char s[])
{
int i,sign;
if((sign = n) < 0) /* record sign */
n = -n; /* make n positive */
i = 0;
do { /* generate digits in reverse order */
s[i++] = n % 10 + '0'; /* get next digit */
} while((n /= 10) > 0); /* delete it */
if(sign < 0)
s[i++] = '-';
s[i] = '\0';
reverse(s);
}
int main()
{
char string[10];
int x;
x = 30;
itoa(x,string);
printf("%s\n",string);
return 0;
}