为什么循环只执行了一次就直接输出了?

为什么循环只执行了一次?re表示操作次数,调试时2 abc a就直接输出了
题目:输入一个正整数 repeat (0输入一个字符串 str,再输入一个字符 c,将字符串 str 中出现的所有字符 c 删除。
输入样例:3 (repeat=3)
happy new year
a
bee
e
111211
1

#include 
#define N 80
int main(void) 
{ 
    int re;
    scanf("%d ",&re);
    char c; 
    char str[N]; 
    void delchar(char *str, char c); 
    for(int i=0;igets(str);
    scanf("%c", &c); 
    getchar(); 
    delchar(str, c); 
    puts(str); 
    }
    
}
void delchar(char *str, char c) 
{ 
    int i, j; 
    i = j = 0; 
    while(str[i] != '\0'){ 
        if(str[i] != c){
            str[j] = str[i]; 
            j++; 
        } 
        i++; 
    } 
    str[j] = '\0'; 
}

一个循环以后就会输出结果

估计是getchar()造成的,你输出一下c的值会发现和输入的不一样
我记得是需要加上一句,去搜索一下吧