编纂一个函数,输入一个4位数字,要求输出这4个数字字符,但每两个数字字符间空一个空格。如输入1990,应输出“1 9 9 0”

编写一个函数,输入一个4位数字,要求输出这4个数字字符,但每两个数字字符间空一个空格。如输入1990,应输出“1 9 9 0”。
#include<stdio.h>
#include<string.h>
void main()
{
  char str[80];
  void insert(char str[]);
  printf("input four digits: ");
  gets(str);
  insert(str);
}
void insert(char str[])
{
int i;
for(i=strlen(str);i>0;i--)
{
str[2*i]=str[i];
str[2*i-1]=' ';
}
printf("output:\n%s\n",str);
}
请问大牛,str[2*i]=str[i];str[2*i-1]=' ';这里2*i是什么意思?有什么用吗?



------解决方案--------------------
1990
位置0123
1 9 9 0
位置0 2 4 6
------解决方案--------------------
int i;
for(i=strlen(str);i>0;i--)
{
str[2*i]=str[i]; //下标0123->0246
str[2*i-1]=' '; //下标1357的就为' '
}
------解决方案--------------------
探讨

int i;
for(i=strlen(str);i>0;i--)
{
str[2*i]=str[i]; //下标0123->0246
str[2*i-1]=' '; //下标1357的就为' '
}

------解决方案--------------------
C/C++ code
//编写一个函数,输入一个4位数字,要求输出这4个数字字符,但每两个数字字符间空一个空格。
//如输入1990,应输出“1 9 9 0”。
#include <stdio.h>
#include <ctype.h>
void fun() {
    char d[5];
    int i;

    while (1) {
        printf("\n请输入一个4位数字:");
        fflush(stdout);
        rewind(stdin);
        fgets(d,5,stdin);
        if (isdigit(d[0])
         && isdigit(d[1])
         && isdigit(d[2])
         && isdigit(d[3]))
            break;
    }
    for (i=0;i<4;i++) printf("%c ",d[i]);
    printf("\n");
}
int main() {
    fun();
    return 0;
}