本人大一,请大家给我解答一下,为什么我这个程序sen等于0的时候它没有输出啊,我调试的时候都能看到他走到输出那步了。

标题
字符串查找

类别
字符串处理

时间限制
2S

内存限制
256Kb

问题描述
给出一个字符串和多行文字,输出在这些文字中出现了指定字符串的行。
程序还需要支持大小写敏感选项:
当选项打开时,表示同一个字母的大写和小写看作不同的字符;
当选项关闭时,表示同一个字母的大写和小写看作相同的字符。

输入说明
输入数据第一行包含一个字符串s,由大小写英文字母组成,长度不超过100。
第二行包含一个数字,表示大小写敏感选项。当数字为0时表示大小写不敏感,当数字为1时表示大小写敏感。
第三行包含一个整数n,表示给出的文字行数。
接下来n行,每行包含一个字符串,字符串由大小写英文字母组成,不含空格和其他字符。每个字符串长度不超过100。

输出说明
输出多行,每行包含一个字符串,按出现的顺序依次给出那些包含了字符串s的行。

输入样例
Hello
1
5
HelloWorld
HiHiHelloHiHi
GrepIsAGreatTool
HELLO
HELLOisNOTHello

输出样例
HelloWorld
HiHiHelloHiHi
HELLOisNOTHello
#include<stdio.h>
#include<string.h>
char change(char a)
{
if(a>='a'&&a<='z')
return a-32;
else if(a>='A'&&a<='Z')
return a+32;
}
int main()
{
char a[100],b[1000][100];
int n,sen,i,j,k;
scanf("%s%d%d",a,&sen,&n);
for(i=0;i<n;i++)
{
scanf("%s",b[i]);
}
if(sen==1)
{
for(i=0;i<n;i++)
{
for(j=0;j<strlen(b[i])-strlen(a)+1;j++)
{
k=0;
if(b[i][j]==a[0])
{
for(;k<strlen(a);k++)
{
if(b[i][k+j]!=a[k])
break;
}
}
if(k==strlen(a))
{
puts(b[i]);
break;
}

        }
    }
}
else if(sen==0)
{
    for(i=0;i<n;i++)
    {
        for(j=0;j<strlen(b[i])-strlen(a)+1;j++)
        k=0;
        if(b[i][j]==a[0]||change(b[i][j])==a[0])
        {
            for(;k<strlen(a);k++)
            {
                if(b[i][j+k]!=a[k]||change(b[i][j+k])!=a[k])
                break;
            }
        }
        if(k==strlen(a))
        {
            puts(b[i]);
            break;
        }    
    }
}

}

img

if(k==strlen(a))
等于0的情况下,是否满足条件。