为什么出现Segmentation fault,求解释并纠错(谢绝新代码)么么哒、

//就输出89,129,一共2个数。
//这次是我自己写的,诚心诚意求修改 
# include<stdio.h>
int main()
{
    char str[80],*pstr;
    int i=0,flag=1,num=0;
    *pstr=str;
    gets(str);
    while(flag==1)
        for(i=0;0<=*(str+i)&&*(str+i)<=9;i++)
        {
        num=num+(*(str+i)-48);
        }
    flag=0;
    while(flag==0)  {
                    printf("%d,",num);
                    flag=1;
                    }
}


至少你在while循环里面没有改变循环条件,会是死循环

while死循环,使str取值越界~