把英文小写字符串转化成整形数组,就是把a~z变成0~25,但a在转换的时候会发生异常,直接跳过了,请教咋回事

把英文小写字符串转化成整形数组,就是把a~z变成0~25,但a在转换的时候会发生错误,直接跳过了,请问怎么回事?
代码如下:
#include<stdio.h>
int main()
{
char s1[100]={0};
int s2[100]={0};
int i=0;
int j=0;

printf("please input s1:\n");
gets(s1);//input
puts(s1);
    while(s1[i]!='\0')
{
s2[i]=int(s1[i])-96;
i++;
}
while(s2[j])
{
printf("%d   ",s2[j]);
j++;
}

printf("\n");

}
------解决思路----------------------
while(s2[j])
既然你把a转化为0,那么还用0来判断不就是说把a视为不存在了吗?

while(j < i)

------解决思路----------------------
‘a’-96=1,所以你转换的结果对应的是1-26,而不是0-25。

因此按要求应该s1[i]-97。

此外,输出的循环的条件按楼上修改。