关于用gets输入字符串的问题

问题遇到的现象和发生背景

gets(s)无法输入,不明白是什么问题
题目是这样的:

img

问题相关代码,请勿粘贴截图
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{
    char c,s[60];
    int n,i,j,a,k[20];
    scanf("%c",&c);
    scanf("%d",&n);
    gets(s);
    a=(int)strlen(s);
    for(i=0;i<n;i++)
    {
        for(j=0;j<a;j++)
        {
            if((s[j]==c)||(s[j]==c-32)||(s[j]==c+32))
            {
                k[i]++;
            }
        }
        if(k[i]>=2)
        {
            printf("%c\n",s);
        }
    }
    return 0;
}

运行结果及报错内容

img


问号是系统生成的,不是自己输入的

我想要达到的结果

希望输入:
c
2
TaNgvFRLJUvgnLjdKvaacumgGtOl
dcaLySkOWzYyAYKBOyfIIxOZCi
希望输出:
dcaLySkOWzYyAYKBOyfIIxOZCi

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

int main()
{
    char c,s[60];
    int n,i,j,a,k[20];
    scanf("%c",&c);
    scanf("%d",&n);
    //gets(s);//使用scanf替换
    scanf("%s",&s);
    a=(int)strlen(s);
    for(i=0;i<n;i++)
    {
        for(j=0;j<a;j++)
        {
            if((s[j]==c)||(s[j]==c-32)||(s[j]==c+32))
            {
                k[i]++;
            }
        }
        if(k[i]>=2)
        {
            printf("%s\n",s);
        }
    }
    return 0;
}

img

printf用%c,也就打印一个字符呀,输不出一条字符串