C 复制数组的一点小问题 复制后输出结果和源数组不一样

 #include <stdio.h>

int i=5;

void input_array ( int array[] ){
    int a;
    for ( a=0; a<i; a++ ){
    scanf ( "%i", &array[a] );
    }
}

void output_array ( int array[] ){
    int a;
    for ( a=0; a<i; a++ ){
    printf ( "%i%s", array[a], "\t" );
    }
}

void copy_array ( int source[], int output[] ){
    int a;
    for ( a=0; a<i; a++ ){
        output[i]=source[i];
    }
}

int main(){
    int array[i];
    int copy_form_array [i];
    printf ("%s%i%s", "Pleast enter some numbers ( ", i, " integers limited ): \n");
    input_array ( array );
    output_array ( array );
    printf ( "%s", "\n" );
    copy_array ( array, copy_form_array );
    output_array ( copy_form_array );
    printf ("%s", "\n");
    return 0;
}

在做一个复制数组的练习的时候写了这些代码
编译时没有提示
运行结果如下

 $ ./20141210_am_copy_array 
Pleast enter some numbers ( 5 integers limited ): 
1 2 3 4 5
1   2   3   4   5   
1594599648  32767   1617756790  32767   1594599680

为什么数组复制后跟源数组不一样??
初学者表示百思不得其解额 :(

 void copy_array ( int source[], int output[] ){
    int a;
    for ( a=0; a<i; a++ ){
        output[i]=source[i];
    }
}

代换output[i]=source[i]; output[a]=source[a];

scanf ( "%d", &array[a] );

首先我必须说你写的代码太乱,你也太粗心啦!
看看我给你的代码!

#include <stdio.h>
static int i=5;
void input_array(int array[]){
    int a;
    for(a=0;a<i;++a){
        scanf("%d",&array[a]);
    }
    return ;
}
void output_array(int array[]){
    int a;
    for(a=0;a<i;++a){
        printf("%d\t",array[a]);
    }
    printf("\n---end--output---\n");
    return ;
}
void copy_array(int source[],int output[]){
    int a;
    for(a=0;a<i;++a){
        output[a]=source[a];
    }
}
int main(void)
{
    int array[i];
    int copy_from_array[i];
    printf("Please enter %d number\n",i);
    input_array(array);
    output_array(array);
    puts("----After copy----");
    copy_array(array,copy_from_array);
    output_array(copy_from_array);
    return 0;
}

希望对你有帮助!

晕这里你怎么写了i
for ( a=0; a<i; a++ ){
output[a]=source[a];
}