Similar presentations:
Строки (лекция 6)
1.
3. Строки.('\0')
char*
char color[] = "синий";
char *colorPtr = "синий";
2.
Например, строку можноприсвоить символьному массиву
word[20] следующим оператором:
cin >> word;
cin>>a>>b>>c;
3.
cin.getlinechar 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.hnew
new unsigned short int
24.
unsigned short int * pPointer;pPointer = new unsigned short int;
*pPointer = 72;
25.
deletedelete 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_tsize) — изменяет размер области
памяти, выделенной для хранения
динамической переменной,
расположенной по адресу 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;