У меня есть программа, которая будет соответствовать строке поиска (начинается с одной точки) во входной строке, но не будет работать для двух или более точек.
основная функция:
int main()
{
int position;
char input[255], pattern[255];
printf("Please enter a line of text of up to 255 characters:\n");
fgets(input,sizeof(input),stdin);
input[strcspn(input, "\n")] = 0;
printf("Please enter the search text of up to 255 characters:\n");
fgets(pattern,sizeof(pattern),stdin);
pattern[strcspn(pattern, "\n")] = 0;
cmp(input, pattern);
return 0;
}
функция cmp:
char cmp(char input[],char pattern[])
{
int i, pattern_position, input_position;
for(int pattern_position = 0; pattern_position < strlen(pattern); pattern_position++) {
if(pattern[pattern_position] == '.'){
char letter_space_comma[54] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', ',', ' ', 'a', 'b', 'c', 'd', 'e', 'f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
for (int letter_space_comma_position= 0; letter_space_comma_position < 54; letter_space_comma_position++){
pattern[pattern_position] = letter_space_comma[letter_space_comma_position];
char *pos = strstr(input, pattern);
if (pos) {
printf("Matches at position %ld.", pos-input);
goto end;
}
}
}
}
char *pos = strstr(input, pattern);
if (pos) {
printf("Matches at position %ld.", pos-input);
} else {
printf("No match.");
}
end:
return 0;
}
Вход 1 (1 точка):
Please enter a line of text of up to 255 characters: The cat sat on the mat.
Please enter the search text of up to 255 characters: .at
Выход 1 (правильный):
Matches at position 4.
Вход 2 (3) точки):
Please enter a line of text of up to 255 characters: The cat sat on the mat.
Please enter the search text of up to 255 characters: ...
Мой вывод 2:
No match.
Ожидаемый вывод 2:
Matches at position 0.