Примеры использования функций обработки строк




Ниже приведены примеры использования данных функций.

Пример 1:

/* сцепить две строки */

/* в головном файле conio.h содержится функция очистки экрана clrscr()*/

#include <string.h>

#include <stdio.h>

#include <conio.h>

int main(void)

{

char destination[25];

char *blank = " ", *c = "C++", *turbo = "Turbo";

strcpy(destination, turbo);

strcat(destination, blank);

strcat(destination, c);

printf("%s\n", destination);

getch();

return 0;

}

Пример 2:

/*cцепить две строки, причем из второй строки копировать не более n символов*/

#include <string.h>

#include <stdio.h>

#include <conio.h>

int main(void)

{

char destination[25];

char *source = "structured ";

strcpy(destination, "programming");

strncat(destination, source, 11);

printf("%s\n", destination);

getch();

return 0;

}

Пример 3:

/*сравнить две строки в лексикографическом порядке*/

 

#include <string.h>

#include <stdio.h>

#include <conio.h>

int main(void)

{

char *buf1 = "aaa", *buf2 = "bbb", *buf3 = "ccc";

int ptr;

ptr = strcmp(buf2, buf1);

if (ptr > 0)

printf("buffer 2 is greater than buffer 1\n");

else

printf("buffer 2 is less than buffer 1\n");

ptr = strcmp(buf2, buf3);

if (ptr > 0)

printf("buffer 2 is greater than buffer 3\n");

else

printf("buffer 2 is less than buffer 3\n");

getch();

return 0;

}

Пример 4:

/*сравнить первые n символов двух строк в лексикографическом порядке*/

 

#include <string.h>

#include <stdio.h>

#include <conio.h>

int main(void)

{

char *buf1 = "aaabbb", *buf2 = "bbbccc", *buf3 = "ccc";

int ptr;

clrscr();

ptr = strncmp(buf2,buf1,3);

if (ptr > 0)

printf("buffer 2 is greater than buffer 1\n");

else

printf("buffer 2 is less than buffer 1\n");

 

ptr = strncmp(buf2,buf3,3);

if (ptr > 0)

printf("buffer 2 is greater than buffer 3\n");

else

printf("buffer 2 is less than buffer 3\n");

getch();

return(0);

}

Пример 5:

/*копирование строки*/

#include <stdio.h>

#include <string.h>

#include <conio.h>

int main(void)

{

char string[10];

char *str1 = "abcdefghi";

 

strcpy(string, str1);

printf("%s\n", string);

getch();

return 0;

}

Пример 6:

/* копировать не более n символов строки s2*/

#include <stdio.h>

#include <string.h>

#include <conio.h>

int main(void)

{

clrscr();

char string[10];

char *str1 = "abcdefghi";

strncpy(string, str1, 3);

string[3] = '\0';

printf("%s\n", string);

getch();

return 0;

}

Пример 7:

 

#include <stdio.h>

#include <string.h>

#include <conio.h>

int main(void)

{

clrscr();

char *string = "Borland International";

printf("%d\n", strlen(string)); // вывод длины строки

getch();

return 0;

}

Пример 8:

#include <string.h>

#include <stdio.h>

#include <conio.h>

int main(void)

{

clrscr();

char string[20];

char *ptr, c = 'r';

strcpy(string, "This is a string");// копирование строковой константы в строку string

ptr = strchr(string, c);

if (ptr)

printf("The character %c is at position: %d\n", c, ptr);

else

printf("The character was not found\n");

getch();

return 0;

}

Пример 9:

#include <string.h>

#include <stdio.h>

#include <conio.h>

int main(void)

{

clrscr();

char string[20];

char *ptr, c = 'r';

strcpy(string, "This is a string");

ptr = strrchr(string, c); // поиск последнего вхождения символа c в строку string

if (ptr)

printf("The character %c is at position: %d\n", c, ptr);

else

printf("The character was not found\n");

getch();

return 0;

}

Пример 10:

#include <stdio.h>

#include <string.h>

#include <conio.h>

int main(void)

{

clrscr();

char *string1 = "abcdefghijklmnopqrstuvwxyz";

char *string2 = "onm";

int *ptr;

ptr = strpbrk(string1, string2); // поиск в строке string1 любого из множества символов, входящих в string2

if (ptr)

printf("strpbrk found first character: %c\n", ptr);

else

printf("strpbrk didn't find character in set\n");

getch();

return 0;

}

Пример 11:

#include <stdio.h>

#include <string.h>

#include <alloc.h>

#include <conio.h>

int main(void)

{

clrscr();

char *string1 = "1234567890";

char *string2 = "123DC8";

int length;

length = strspn(string1,); // определение длины отрезка строки string1, содержащего символы из множества, входящих в строку string2

printf("Character where strings differ is at position %d\n", length);

getch();

return 0;

}

Пример 12:

#include <stdio.h>

#include <string.h>

#include <alloc.h>

#include <conio.h>

int main(void)

{

clrscr();

char *string1 = "1234567890";

char *string2 = "747DC8";

int length;

length = strcspn(string1, string2); // определение длины отрезка строки string1, не содержащего символы cтроки string2

printf("Character where strings intersect is at position %d\n", length);

getch();

return 0;

}

Пример 13:

#include <string.h>

#include <stdio.h>

#include <conio.h>

int main(void)

{

clrscr();

char input[16] = "abc,d";

char *p;

p = strtok(, ",");// выделение из строки input лексемы, разделенные любым из множества символов, входящих в строку ","

if (p) printf("%s\n", p);

p = strtok(NULL, ",");

if (p) printf("%s\n", p);

getch();

return 0;

}

Методические указания

Выполните индивидуальные задания, учитывая следующие моменты:

1) строка ­- это одномерный массив символов, заканчивающийся нулевым символом. В языке С признаком окончания строки (нулевым символом) служит символ '\0';

2) объявляя массив символов, предназначенный для хранения строки, необходимо предусмотреть место для нуля, т.е. указать его размер в объявлении на один символ больше, чем наибольшее предполагаемое количество символов;

3) используйте, где это возможно стандартные функции обработки строк.

Индивидуальные задания

1. Ввести с клавиатуры слово. Проверить, является ли оно палиндромом.

2. Ввести с клавиатуры строку. Поменять в строке порядок символов на обратный.

3. Ввести строку с клавиатуры. Проверить, является ли строка целым числом.

4. Поменять каждую согласную русскую букву на цифру «8», а каждую гласную – на символ «–».

5. Ввести строку с клавиатуры. Заменить все прописные латинские символы на строчные.

6. Ввести строку с клавиатуры. Заменить все строчные латинские символы на прописные.

7. Ввести строку с клавиатуры. Проверить, является ли она правильным идентификатором.

8. Ввести строку с клавиатуры. Определить наибольшее количество цифр, идущих подряд.

9. Ввести строку с клавиатуры. Удалить из строки все гласные буквы

10. Ввести строку с клавиатуры. Удалить из строки все согласные буквы.

11. Ввести строку с клавиатуры. Заменить все пробелы, идущие подряд, на один пробел.

12. Ввести строку с клавиатуры. Проверить, является ли строка вещественным числом.

13. Ввести строку с клавиатуры. Заменить все прописные русские символы на строчные.

14. Ввести строку с клавиатуры. Заменить все строчные русские символы на прописные.

15. Ввести с клавиатуры фразу и два слова. Заменить во введённой фразе первое слово на второе везде, где оно встречается.

16. Ввести строку с клавиатуры. Определить, какой символ чаще всего встречается.

17. Ввести с клавиатуры слово и фразу. Подсчитать, сколько раз это слово встречается во введённой фразе.

18. Ввести строку с клавиатуры. Определить максимальное количество одинаковых символов, идущих подряд.

19. Ввести строку с клавиатуры. Поменять местами символы, стоящие на соседних чётных и нечётным местах.

20. Ввести строку с клавиатуры. Вывести статистику о том, какие символы встречаются в строке и какое количество раз.

21. Ввести с клавиатуры фразу на русском языке. Перевести её в транслит и вывести на экран. Например «Я обожаю программировать на Турбо Паскале!» – «Ya obozhayu programmirovat' na Turbo Paskale!».

22. Ввести две строки с клавиатуры. Определить, сколько раз вторая строка встречается в первой.

Факультатив

1. Ввести фразу с клавиатуры. Проверить, является ли она палиндромом, например фразы «А роза упала на лапу Азора!», «Madam! I'm Adam» - являются палиндромами.

2. Ввести с клавиатуры два слова. Проверить, являются ли они анаграммами, то есть возможно ли из всех букв одного слова составить другое. Например «торс» - «сорт», «апельсин» - «спаниель».

3. Ввести с клавиатуры русское слово. Разбить его по слогам.

4. Ввести с клавиатуры строку, состоящую из символов «(», «)», «[», «]», «{», «}». Определить, правильная ли скобочная структура у строки. Примеры правильных структур: «[]», «({})», «[([]){}]», «([{}]({})[({[]{}})])». Примеры неправильных структур: «][», «{», «(]», «[{]}», «({[])»

5. Ввести строку. Проверить, является ли она правильным арифметическим выражением. Например: «(3.2+8*(5–3))*1.12+6» – правильное, «*3R+)/4+8.–+» – неправильное.

6. Ввести фразу. Определить в ней самое часто встречающееся слово и подсчитать, сколько раз оно повторилось. Например, во фразе «Я буду вместо, вместо, вместо неё, твоя невеста, честно, честная Ё!» самое часто встречающееся слово «вместо», оно повторилось три раза.

7. Ввести с клавиатуры фразу на русском языке. Взять все согласные буквы, отсортировать их по алфавиту и записать в те же позиции, где они были записаны в неотсортированном виде. Регистр букв должен сохраниться в самой строке, а не у сортируемых букв. Все остальные символы оставить на своих местах. Например, строка «От Волги до Енисея» должна преобразоваться в строку «Ов Годли но Еситея».

8. Ввести с клавиатуры 10 слов строчными буквами на русском языке. Вывести слова в алфавитном порядке. (Проверить правильность сортировки с буквой 'ё').



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2022-11-27 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: