156.00K
Category: programmingprogramming

Строки (лекция 6)

1.

3. Строки.
('\0')
char*
char color[] = "синий";
char *colorPtr = "синий";

2.

Например, строку можно
присвоить символьному массиву
word[20] следующим оператором:
cin >> word;
cin>>a>>b>>c;

3.

cin.getline
char Array1[80];
cin.getline(Array1, 80, '\n');

4.

Функции работы со строками.
<cstring>
1.
char *strcpy (char *s1,const char *s2);
Копирует строку s2 в массив
символов s1. Возвращает значение
s1.

5.

2.
char *strncpy (char *s1,const char *s2,
size_t n);
копирует не более n символов из
строки s2 в массив символов s1.
Возвращает значение s1.

6.

3.
char *strcat (char *s1,const char *s2);
Добавляет строку s2 к строке s1.
Первый
символ
строки
s2
записывается поверх завершающего
нулевого
символа
строки
s1.
Возвращает значение s1

7.

4.
char *strncat (char *s1,const char *s2,
size_t n);
Добавляет не более n символов
строки s2 в строку s1. Первый
символ из s2 записывается поверх
завершающего нулевого символа в
s1. Возвращает значение s1.

8.

5.
int strcmp(const char *s1,
const char *s2);
Сравнивает строки s1 и s2. Функция
возвращает значение 0, меньшее, чем
0 или большее, чем 0, если s1
соответственно равна, меньше или
больше, чем s2.

9.

6.
int strncmp(const char *s1,
const char *s2, size_t n);
Сравнивает до n символов строки s1
со строкой s2. Функция возвращает
значение 0, меньшее, чем 0 или
большее,
чем
0,
если
s1
соответственно равна, меньше или
больше, чем s2.

10.

strcpy_s(s3, sizeof(s1), s1);
strcat_s(s3, sizeof(s2), s2);
#define CRT_SECURE_NO_WARNINGS

11.

7.
size_t strlen (const char *s);
Определяет
длину
строки
s.
Возвращает количество символов,
предшествующих
завершающему
нулевому символу.

12.

8.
char *strpbrk(char *sl, char *s2);
Функция возвращает указатель на
символ, являющийся первым
вхождением любого из символов из
s2 в строку s1, если его нет,
возвращается NULL.

13.

9.
char *strstr(char *s1, char *s2);
Функция выполняет поиск первого
вхождения подстроки s2 в строку s1.
В случае удачного поиска,
возвращает указатель на элемент из
s1, с которого начинается s2, и NULL
в противном случае.

14.

10.
size_t strspn(char *sl, char *s2);
Функция возвращает индекс первого
символа в s1, отсутствующего в s2.

15.

11.
char *strtok(char *sl, char *s2);
Функция возвращает следующую
лексему из s1, отделенную любым из
символов из набора s2.

16.

//Использование strcpy и strncpy
# include <iostream.h>
#include <string.h>
#include <windows.h>
main ()
{
char x[ ] = "Поздравляю Вас с днем
рождения";
char y[35], z[15];
SetConsoleOutputCP(1251);

17.

cout << "Строка в массиве х: " << x
<< endl;
strcpy(y,x);
cout<< "Строка в массиве у: "<< y <<
endl;
strncpy(z, x, 14) ;
z[14] = '\0';
cout << "Строка в массиве z: " << z<<
endl;
system("pause"); return 0; }

18.

// Использование strcat и strncat.
#include <iostream.h>
#include <string.h>
#include <windows.h>
main () {
SetConsoleOutputCP(1251);
char s1 [25] = "Счастливого ";
char s2 [ ] = "Нового Года ";
char s3 [40] = "";
strcat (s1, s2);

19.

cout << "strcat (s1, s2) = " <<s1 <<
endl;
cout << "strncat (s3, s1, 12) = " <<
strncat (s3, s1, 12) << endl;
cout << "strcat (s3, s1) = " <<
strcat (s3, s1) << endl;
system("pause");
return 0;
}

20.

В заголовочном файле <stdlib.h>
содержатся полезные функции
преобразования строк в числа:
double atof(const char* p);
преобразует переданную строку в
double;

21.

int atoi (const char* p); преобразует
переданную строку в int;
long atol (const char* p); преобразует
переданную строку в long.

22.

4. Динамические объекты.
Первый
использует
семейство
функций malloc
и достался в
наследство от С, второй использует
операции new и delete.

23.

stdlib.h
new
new unsigned short int

24.

unsigned short int * pPointer;
pPointer = new unsigned short int;
*pPointer = 72;

25.

delete
delete pPointer;

26.

void * malloc(size_t size) - выделяет
область памяти для размещения
динамической переменной размером size
байт. Для определения размера
памяти,занимаемой переменными,
может быть использован оператор
sizeof.Тип size_t определен в stdlib.h и
является беззнаковым целым типом,
способным хранить размер памяти,
выделяемом при одном вызове malloc().

27.

void * calloc(size_t n, size_t size) —
выделяет область памяти для
размещения массива из n элементов
по size байтов каждый.

28.

void * realloc (void * pointer, size_t
size) — изменяет размер области
памяти, выделенной для хранения
динамической переменной,
расположенной по адресу pointer
(при этом переменная может быть
перенесена по другому адресу).

29.

void free (void * pointer) освобождает область памяти по
адресу pointer, выделенную ранее
вызовами malloc, calloc или realloc.

30.

Пример. Выделение памяти под
динамическую переменную
int *p;
p = (int *) malloc(55*sizeof(int));
Пример. Выделение памяти под
динамический массив
int * b = (int *) calloc(N,sizeof(int));
Пример. Увеличение размера
массива в два раза
b = (int *) realloc(b,2*N*sizeof(int));

31.

Пример1. Выделение памяти под
динамический массив.
cin>>n;
int *mas=new int[n]; //выделение
памяти под массив
delete[] mas; //освобождение
памяти
Пример 2. Выделение памяти под
двумерные массивы.

32.

int n, k, i, **mas;
cin>>n; cin>>k;
mas=new int*[n]; //выделение
//памяти под n указателей на строку
for(i=0;i<n;i++) mas[i]=new int[k];
//выделение памяти для каждой
//строки по числу столбцов k
for( i=0;i<n;i++) delete mas[i];
//освобождение памяти
delete [] mas;
English     Русский Rules