Хелпикс

Главная

Контакты

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





Таблица ASCII кодов, применяемая в системе программирования



Таблица ASCII кодов, применяемая в системе программирования

Borland C++ 3.1 for DOS

 

 

 


Назад

1.8  Сцепление двух строк (конкатенация)

 

Функция strcat(s1,s2) присоединяет строку s2 в конец строки s1 и возвращает указатель на строку, совпадающий с первым аргументом. При этом сначала из строки s1 удаляется завершающий нуль-символ. В конце новой строки S1 помещается '\0'.

Программист должен сам обеспечить достаточную длину строки s1.

Примеры.

1) char s1[40]="Скоро Новый Год!";

char s2[]="Скоро первая сессия!";

printf(" %s\n",strcat(s1,s2));

Будет получена строка:

Скоро Новый Год! Скоро первая сессия!

2) Вторым параметром является текстовая константа:

char s3[50]="Успешной сдачи";

printf("%s\n\t%s\n",strcat (s3," 1-ой сессии!!!",s3));

Будет получено две строки:

 

Успешной сдачи 1-ой сессии!!!

Успешной сдачи 1-ой сессии!!!

 

3) char s4[35]="Успехов и здоровья";

char s5[]=" в Новом Году!";

char *p;

p=strcat(s4, s5);

pintf("%s\n%s\n",s4,p);

 

Будет получено две строки:

 

Успехов и здоровья в Новом Году!

Успехов и здоровья в Новом Году!

Функция strncat(s1,s2,n) присоединяет n символов строки, на начало которой указывает s2, в конец строки, на начало которой указывает s1 и возвращает указатель на строку, совпадающий с первым аргументом. Сформированная строка s1 ограничивается '\0'.

Если n больше длины строки s2, то выполняется постая конкатенация.

Если длина строки s2 меньше n, то все сиволы s2 присоединяются к строке s1.

1.9  Определение позиции первого вхождения символа из заданного набора символов

Функция strcspn(s1,s2) сопоставляет каждый символ строки s1 со всеми символами строки, на начало которой указывает s2, и возвращает позицию первого вхождения символа строки s2 в строке s1.  Символ '0' в сравнении не участвует.

Если строка s1 начинается с символа, встречающегося в строке s2, то функция возврвщает значение нуль. Если строка s1 не содержит ни одного символа строки s2, то возвращаемое функцией значение совпадает с длиной строки s1.

Примеры.

 

printf("%d %d %d\n",

strcspn("asdf",  "hjyars"),    //s1начанается с 'a'

strcspn("asdf", "ghtdu"),    //в s1 'd' в позиции № 2

strcspn("asrt", "hj"));    // в s1 не символов s2

Получим:

0 2 4

Здесь 0 и 2 – позиции в строке s1, 4 – длина строки s1.

 

1.10 Cравнение двух строк

 

Сравнение строк производится посимвольно слева направо. Большей считается та строка, в которой первый несовпадающий символ имеет больший код в кодовой таблице.

Функция strcmp(s1,s2) сравнивает строки s1 и s2 . Возвращает отрицательное значение, если s1<s2, нулевое, если s1=s2 или положительное значение, если s1>s2.

Функция strncmp(s1,s2, n) сравнивает строку s1 и первые n символов строки s2 . Возвращает отрицательное значение, если s1<s2, нулевое, если s1=s2 или положительное значение, если s1>s2.

 

Пример. Ввести две строки. Вывести их в лексикографическом порядке.

 

#include<stdio.h>

#include<string.h>

#include<conio.h>

void main()

{

char s1[20];

char s2[20];

puts("Введите 1-ую строку "); gets(s1);

puts("Введите 2-ую строку "); gets(s2);

if(strcmp(s1,s2)<0) {puts(s1); puts(s2);}

else if(strcmp(s1,s2)>0) {puts(s2); puts(s1);}

 else puts("Строки совпадают");

getch();

}

 

Результаты выполнения программы:

Введите 1-ую строку

abcdefg

Введите 2-ую строку

abcdefg

Строки совпадают

 

Введите 1-ую строку

bcdert

Введите 2-ую строку

bccertyu

bccertyu

bcdert

 

Введите 1-ую строку

rtyu

Введите 2-ую строку

rtdh

rtdh

rtyu

Пример. Сколько раз построка s1 содержится в строке s?

 

#include<stdio.h>

#include<string.h>

#include<conio.h>

void main()

{

char s[20];

char s1[20];

puts("Введите строку "); gets(s);

puts("Введите подстроку "); gets(s1);

int k=0,i=0;

char *p=s;

int n=strlen(s1);

printf("n=%d %c\n",n,*p);

while(strstr(p,s1) && i<n)

{

k=k+1;

p=p+n+1; printf("%c\n",*p);

}

puts("В строке:");

puts(s);

printf("%d раз встречается %s\n",k,s1);

getch();

 

}

 

Эта же задача с использованием srtcmp

 

/*Сколько раз подстрока s1 встречается в строке s? */

#include<stdio.h>

#include<string.h>

#include<conio.h>

void main()

{

char s[20];

char s1[20];

puts("Введите строку "); gets(s);

puts("Введите подстроку "); gets(s1);

int k=0,i=0;

int m=strlen(s);

int n=strlen(s1);

printf("m=%d n=%d\n",m,n);

while(i<m)

{

if(strncmp(s1,&s[i],n)==0)

 {

k=k+1; i=i+n;

}

else i=i+1;

}

puts("В строке:");

puts(s);

printf("%d раз(а) встречается %s\n",k,s1);

getch();

 

}

 



  

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