语句无法调用,执行时像是直接跳过

请问这个fuzhi(str2);为什么不能调用,在我运行程序时这个语句会跳过

    #include<stdio.h>
    #include<string.h>

int main(){
        int a,m;
        int x=0;
        char c,str;
        char str1[111];
        char str2[111];
        char fuzhi(char c[111]);

        printf("请输入字符串\n");
        fuzhi(str1);
        x=0;

        char *p;
        p=str1;

        printf("%c",*p);

        printf("请输入从第几个字母开始替换\n");
        scanf("%d",&m);
        printf("请输入要替换的字符串\n");

        fuzhi(str2);

        printf("%s",str1);
}


char fuzhi(char c[111]){
    int x=0;
    char z;

            while((z=getchar())!='\n'){
            c[x]=z;
            x++;        
        }
        return 0;
}

在前面加一个 getchar(),把前一个scanf函数最后的换行符过滤掉
getchar();
fuzhi(str2);

    fuzhi(str2);

这句之前,加个getchar();否则前面输入m值后的换行符还在输入缓冲区啊