用c语言把正整数转换成字符串

#include<stdio.h>
#include<string.h>
void fun(int a,char str[100])
{
int i=0;
do
{
str[i]=a%10+'0';
a=a/10;
i++;
}
while (a);
str[i]='\0';
}
int main()
{
int a;
char str[100];
printf("请输入一个正整数:\n");
scanf("%d",&a);
fun(a,str);
printf("字符串:\n");
for(int i=strlen(str)-1;i>=0;i--)
printf("%c",str[i]);
}
上面的代码前面的do while语句和后面的for语句是怎么运行的,为什么是这样写

注释写在代码相应位置,请查看


#include<stdio.h>
#include<string.h>
void fun(int a, char str[100])
{
    int i = 0;
    do
    {
        str[i] = a % 10 + '0';  //把a的个位转换成字符类型,并放入str字符数组中
        a = a / 10;                //把a/10,这样a的十位变成个位,支持下一次循环.如a=123,之前已经把3存入字符数组中,a=a/10=12(取整),下一次存入2,然后继续/10,存入1,最后1/10=0,结束循环
        i++;
    } while (a);                //循环条件a不等于0
    str[i] = '\0';                //数组后接一个'\0',作为停止符
}
int main()
{
    int a;
    char str[100];
    printf("请输入一个正整数:\n");
    scanf("%d", &a);
    fun(a, str);
    printf("字符串:\n");
    for (int i = strlen(str) - 1; i >= 0; i--)  //strlen统计str数组的'\0'之前的元素数量,然后一个一个输出
        printf("%c", str[i]);
}

do...while是把每个数字转成字符存进字符串中
for循环时输入字符串中的每个字符

for 后面是不是却个end