关于字符型指针数组的赋值有关问题 求教

关于字符型指针数组的赋值问题 求教
C/C++ code

#include<stdio.h>
int main()
{
    static char * str[500002]; 
    int N,i;
    scanf("%d",&N);
    for(i=0;i<N;i++)
        scanf("%s",str[i]);
    for(i=0;i<N;i++)
        printf("%s\n",str[i]);

    return 0;
}





scanf("%s",str[i]); 这句好像有问题,运行时在这出现错误,请问这是什么问题? 谢谢各位!

------解决方案--------------------
C/C++ code
int main()
{
    static char * str[500002]; 
    int N,i;
    scanf("%d",&N);
    for(i=0;i<N;i++)
    {
        str[i] = (char*)malloc(128*sizeof(char));
        scanf("%s",str[i]);
    }
    for(i=0;i<N;i++)
        printf("%s\n",str[i]);

    for(i=0;i<N;i++)
        free(str[i]);

    return 0;
}