すみません。「I」(大文字のアイ)と「l」(小文字のエル)と「i」(小文字のアイ)の文字がいずれか1つ以上含まれる場合は「caution」を出力し、そうでない場合は入力した文字列をそのまま表示するプログラムを作りたいのですが、あるケースの場合、上記の動作をしない場合があるみたいです。(作ったプログラムをテストするプログラムにかけたら失敗ケースが1つありました。)
考えましたが、どんな場合に上記の動作をしないのかがわからないので、教えてください。
どうかよろしくお願いします。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int main()
{
//・1 行目には大文字小文字を含む半角英字アルファベットで構成される文字列 S
//・入力は 1 行となり、末尾に改行を1つ含みます。
char S[102];
scanf("%s", S);
//テスト
//printf("%s", S);
//Iかiかlが入力されたらcaution
for (int i = 0; i < sizeof(S); i++)
{
if (S[i] == 'i' || S[i] == 'l' || S[i] == 'I')
{
printf("caution");
break;
}
}
//Iもiもlも入力されなかったら、入力された文字列をそのまま表示
int counter = 0;
for (int i = 0; i < sizeof(S); i++)
{
if (S[i] != 'i' && S[i] != 'l' && S[i] != 'I')
{
counter++;
}
if (counter == sizeof(S))
printf("%s", S);
}
printf("\nstop");
system("pause");
return 0;
}