Хелпикс

Главная

Контакты

Случайная статья





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



3.3. Функции для обработки строк

Для выполнения описанных в этом подразделе функций необходимо подключить файл string.h командой #include <string.h>.

 

Функция Прототип функции Операция
1. strcat char *strcat(s1,s2) char *s1, *s2; сцепить две строки
2. strncat char *strncat(s1,s2,n) char *s1, *s2; int n; сцепить две строки, причем из второй строки копировать не более n символов
3. strcmp int strcmp(s1,s2) char *s1, *s2; сравнить две строки в лексикографическом порядке
4. strncmp int strncmp(s1,s2, n) char *s1, *s2; int n; сравнить первые n символов двух строк
5. strcpy char *strcpy(s1,s2) char *s1, *s2; копировать строку s2 в строку s1
6. strncpy char *strncpy(s1,s2,n) char *s1, *s2; int n; копировать не более n символов строки s2
7. strlen int strlen(s) char *s; определить длину строки (число символов без завершающего нулевого символа)
8. strchr char *strchr(s,n) char *s; int n; найти в строке первое вхождение символа с
9. strrchr char *strrchr(s,c) char *s; int c; найти в строке последнее вхождение символа с
10. strpbrk char *strpbrk(s1,s2) char *s1, *s2; найти в строке s1 любой из множества символов, входящих в строку s2
11. strspn int strspn(s1,s2) char *s1, *s2; определить длину отрезка строки s1, содержащего символы из множества, входящих в строку s2
12. strcspn int strcspn(s1,s2) char *s1, *s2; определить длину отрезка строки s1, не содержащего символы cтроки s2
13. strtok char *strtok(s1,s2) char *s1, *s2;   выделить из строки s1 лексемы, разделенные любым из множества символов, входящих в строку s2

 

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

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

Пример 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;

}



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.