Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Поиск подстрок



Кроме поиска символов в строке, вы также можете поохотиться и за подстроками. Листинг 6.9 демонст­рирует этот метод. Данная программа аналогична ЕХТ1, но устанавливает расширение файла.ТХТ.

Листинг 6.9. ЕХТ2.С (проверка расширения файла, демонстрация №2)

1: #include <stdio.h>

2: #include <string.h>

3:

4: main()

5: {

6: char flleName[128];

7: char *p;

8:

9: printf("Enter file name: ");

10: gets(fileNanie);

11: printf("As entered: %s\n", fileName);

12: strupr(fileName);

13: p = strstr(fileNaine, ".ТХТ");

14: if (p)

15: printf(“File.naine is complete\n");

16: else {

17: p = strchr(fileName; '.');

18: if (p)

19: *p = NULL; /* Удалить любое другое расширение */

20: strcat(fileName, ".ТХТ");

21: }

22: printf("Final file name: %s\n", fileName);

23; return 0;

24: }

_______________________________________________________

Новая программа создает имя файла, которое обязательно заканчивается расширением.ТХТ. Запустите программу ЕХТ2 и введите test или test.txt, что даст результат, аналогичный программе ЕХТ1. Но если вы введете test.с, программа ЕХТ2 отобразит следующее:

Enter file name: test.с

As entered: test.с

Final file name: TEST.TXT

Чтобы определить, есть ли в имени файла расширение.ТХТ, программа выполняет в строке 13 оператор

р = strstr(fileName, ".ТХТ");

Подобно strchr(), функция strstr() возвращает адрес подстроки или нуль, если искомая строка не найдена. Если же цель будет обнаружена, указатель р установится равным ее адресу, в данном примере - адресу точки в подстроке.ТХТ. Поскольку расширение может быть введено и строчными буквами, программа выпол­няет оператор

strupr(fileName);

чтобы перед вызовом функции strstr() преобразовать буквы оригинальной строки в прописные.

Программа ЕХТ2 также демонстрирует способ усечения строки в позиции заданного символа или подстро­ки. Строка 17 вызывает функцию strchr(), чтобы установить указатель р равным адресу первой точки в стро­ке fileName. Если результат этого поиска не нулевой (строка 18), строка 19 выполнит оператор, который за­пишет вместо точки нулевой байт:

*р = NULL;

Тем самым будет присоединен новый конец строки в том месте, где раньше находилось расширение файла. Теперь строка готова к добавлению нового расширения путем вызова функции strcat() в строке 20.





Дата публикования: 2015-01-23; Прочитано: 189 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...