在调试的时候出现了这样的错误,请问是哪个指针出了问题呢

源代码:

#include<stdio.h>
#include<string.h>
void filter(char *p)
{
    char *q=p;
    for(;q!='\0';q++)
    
        if(*q<48||*q>58)
        {
            *p=*q;
            p++;
        }
    
    *p='\0'; 
 } 
 
int main()
{
    char A[100];
    char *p=A;
    printf("输入字符串:");
    gets(A);
    filter(A);
    printf("过滤数之后:%s\n",A);
    printf("字符串的十进制为:");
    for(;*p!='\0';p++)
    printf("%d",*p);
    return 0; 

不知道问题在哪儿,其他同学做出来结果都挺正常的,求大佬指教

for循环判断条件,应该是*q != '\0'

for (; *q != '\0'; q++)