Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
C-fakepathELEMENT PROGRAMMIROVANIYA LAST.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
1.01 Mб
Скачать

38 Вопрос . *** Функции для работы со строками

strlen (a) - определяет длину строки. Заменяет sizeof ().

strcpy(a1,a2) -копирует a2 в a1

strncpy(a1,a2,n) -копирует n символов из a2 в a1

strcat(a1,a2) -обьеденяет a1 и a2 (a2 после a1 )

strcmp(a1,a2) сравнивает a1 и a2 с учетом регистра, если строки одинаковы то возвращает 0, если r s1>s2 то 1, если s1<s2 то -1

stricmp(s1,s2) – аналогично strcmp но без учета регистра.

strncat(s1,s2,n) – n символов из s2 добавляет в конец s1

strstr(s1,s2) – находит подстроку s2 в составе s1 , начиная с этой позици и выделяет оставшиеся символы..

sprintf(s,........)- печать не на экран а в строку s s аналогично printf sscanf(s,......) - считывает данные не с клавиатуры а со строки

Пример Ввести строку и определить число появлений символа А

#include <stdio.h>

#include <string.h>

main ()

{

char a[20];

int i, n,s;

scanf("%s",&a); // vvod

printf("%s",a); // vivod

n=strlen(a);// dlina

s=0;

for (i=0 ;i< n;i++)

if (a[i]=='A')

s= s+1;

printf(" s=%d",s);

}

Пример 2 Определить число появлений символа A (другое решение)

#include <stdio.h>

#include <string.h>

main ()

{

char a[20]="A455AABB5saA";

int i, n,s;

i=0;

s=0;

while (a[i]!='\0')

{

if (a[i]=='A')

s= s+1;

i=i+1;

}

printf(" s=%d",s);

}

Пример 3

#include <stdio.h>

#include <string.h>

main ()

{

char a[20]="Program";

char b[20]="Pascal";

int i, n,s=0;

if (strcmp("Grup","grup")==0)

printf("s=%d",strlen(a));

else printf("s=%d",strlen(b));

}

Пример 4

#include <stdio.h>

#include <string.h>

main ()

{

char a[20]="Program";

char b[20]="Pascal";

int i, n,s=0;

if (strcmp("Ritchi","ritchi")==0)

printf("s=%d",strlen(strncat(a,b,1)));

else printf("s=%d",strlen(strncat(a,b,6)));

}

Пример 5

#include <stdio.h>

#include <string.h>

main ()

{

char a[20]="Programc++";

char b[20]="ram";

char c[20];

int i, n,s=0;

strcpy(c,strstr(a,b));

printf(“%s \n”, c);

if (strlen(c)>0)

printf("s=%d",strlen(strncat(a,b,1)));

else printf("s=%d",strlen(c));

}

39 Вопрос ** Перечислительный тип

Это тип данных обьявляется с помощью ключевого слова enum и задается списком своих возможных значений.Т.е вначале должен быть определен сам тип !!!

Например

enum mesac {yanvar, fevral, mart,aprel};// тип месяц

enum predmet {matematika,fizika, ximiya};// тип предмет

enum cvet {krasniy, jeltiy, zeleniy}; // тип цвет

enum figura={treugolnik, kvadrat, pramougolnik}; // тип фигура

После формирования типа можно обьявить переменные

predmet jafar,gunel;// 2 peremeniye tipa predmet

В действительности перечислительный тип реализован как целочисленный unsighed int со значениями 0, 1,2 …, т.е. yanvar=0, fevral=1, fizika=2 .

С этим типом данных можно выполнять ограниченное число операций-присвоение из своего списка, сравнение, в составе оператора цикла

Пример jafar=ximiya;

Пример

#include <stdio.h>

main ()

{

enum cvet {jeltiy,beliy,krasniy};

cvet b1,t; int d=0;

b1=beliy;

printf("%d\n",b1);

for(t=jeltiy;t<=krasniy;t++)

d=d+t*t;

printf("%d",d);

}

Программа выдаст

1

5

Этот экзотический тип в основном используется для придания больщей наглядности.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]