Головна

Пошук символів

  1. Автоматичний пошук і заміна фрагмента тексту
  2. Алгоритм випадкового пошуку
  3. Алгоритм випадкового пошуку за найкращою пробі
  4. Алгоритм, види алгоритмів. Алгоритмізація пошуку правової інформації.
  5. Алгоритмічні завдання пошуку в графах: завдання Прима-Краскала, Дейкстри, Форда-Фалкерсона.
  6. Античні мислителі в пошуках загального, особливого і повторюваного в історії
  7. Б. Етап пошуку альтернатив

Лістинг 6.8 показує, як використовувати функцію strchr () для пошуку окремих символів в рядку,

Лістинг 6.8. ЕХТ1. З (перевірка розширення файлу, демонстрація №1)

1: #include

2: #include

3:

4: main ()

5: {

6: char fileName [128];

7:

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

9: gets (fileName);

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

11: if (strchr (fileName, '.'))

12: printf ( "File name is probably complete \ n");

13: else

14: strcat (fileName, ".TXT");

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

16: return 0;

17:}

___

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

Enter file name: test.txt

As entered: test.txt

File name is probably complete

Final file name: test.txt

Але якщо ви введете test без розширення, програма приєднає до імені розширення .TXT, відобразивши:

Enter file name: test

As entered: test

Final file name: test.TXT

Програма ЕХТ1 знаходить розширення в імені файлу, виконуючи пошук точки серед символів введеного рядка. (В імені файлу може бути тільки одна точка, яка повинна передувати розширення, якщо воно є.) Ключовим в цій програмі є оператор if ... else (рядки 11-14);

if (strchr (fileName, '.'))

printf ( "File name is probably complete \ n");

else

strcat (fileName, ".TXT");

Вираз strchr (fileName, '.') Повертає покажчик на символ точки в рядку, що адресується покажчиком fileName. Якщо такий символ не знайдений, функція strchr () повертає нуль. Оскільки ненульові значення означають "істину", ви можете використовувати функцію strchr () в якості повертає значення "істина" / "брехня". Ви також можете застосувати функцію strchr () для присвоювання покажчика на подстроку, що починається з заданого символу. Наприклад, якщо р - Покажчик, оголошений як char *, і покажчик fileName з програми ЕХТ1 адресує рядок TEST.TXT, то результат дії оператора р = strchr (fileName, '.'); показаний на рис. 6.4.

Мал. 6.4 демонструє ще одне важливе момент, пов'язаний з адресацією покажчиком неповною рядки, а її частини - подстроки, Такими покажчиками слід користуватися з великою обережністю. На малюнку показана тільки один рядок, "TEST.TXT", що закінчується нульовим байтом, але два покажчика - fileName і р. Покажчик fileName адресує повну рядок. А покажчик радресує подстроку всередині того ж набору символів. Строкові функції не піклуються про байтах, які передують їх першому символу. Тому оператор

puts (p);

відображає подстроку ".TXT" так, ніби вона повна строкова змінна, а не частина іншого рядка.

У програмуванні на С немає нічого незвичайного в використанні багатьох покажчиків, що адресують подстроки однієї і тієї ж повної рядка. Але рядок, показана на рис. 6.4, розташована в купі, тому оператор

free (fileName);

коректно звільняє займану рядком пам'ять. Однак програма ніколи не повинна виконувати оператор виду

free (p); / * ??? * /

Мал. 6.4. Функція strchr () знаходить символ в рядку

намагаючись тим самим звільнити подстроку, що адресується покажчиком р, Що, безсумнівно, призведе до руйнування купи, викликавши помилку, що відноситься до розряду важко виявляються.

Функція strchr () шукає перша поява символу в рядку. Оголошення та оператори

char * p;

char s [] = "Abracadabra";

р = strchr (s, 'a');

привласнюють вказівником р адреса першої малої літери 'А' в рядку "Abracadabra".

Функція strchr () розглядає завершальний нуль рядки як значущий символ. Прийнявши до уваги цей факт, можна дізнатися адресу кінця рядка. З огляду на попередні оголошення, оператор

р = strchr (s, 0);

встановить р рівним адресою нульового символу в рядку s. Використовуйте цей простий метод, щоб знайти кінець рядка.

Щоб знайти остання поява символу в рядку, викличте функцію strrchr (). З огляду на попередні оголошення, оператор

р = strrchr (s, 'b');

встановить покажчик р рівним адресою підрядка "bra" в кінці рядка "Abracadabra".



Конкатенация строк | Пошук подстрок

Нульові рядки і нульові символи | відображення рядків | читання рядків | зауваження | Визначення довжини рядків | копіювання рядків | дублювання рядків | попередження | зауваження | зауваження |

© um.co.ua - учбові матеріали та реферати