Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Строки лекция.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
94.21 Кб
Скачать

Int atoi(const char* string);

long atol(const char* string);

Вторая группа:char*

Itoa(int value, char* string, int radix);

char* ltoa(long value, char* string, int radix);

Функции из второй группы могут создавать строковое представление чисел в любой системе (по любому основанию) от 2 до 36. Основание передается в третьем параметре. Чтобы получить строковое представление числа в десятичной системе, передайте 10. Функции возвращают указатель на строку.

ПРИМЕЧАНИЕ

При использовании этих функций не забывайте выделять память, достаточную для предоставления строкового предоставления числа. Например, максимальная длина десятичного строкового представления четырехбайтного беззнакового целого числа - 11 байт, включая нуль-терминатор ("4294967295").

Пример:

char str1[5];

char str2[5];

char str3[5];

itoa(12, str1, 10); //str1=”12”

itoa(12, str1, 16); //str1=”C”

itoa(12, str1, 2); //str1=”1100”

Конкатенация (объединение) строк

Сначала простой вопрос – каков результат выполнения следующего кода:

char str1[10]="Hello";

char str2[10]="World!";

char* str3;

str3=str1+str2;

Если ответ – ошибка на этапе компиляции, материал изложенный в статье вы усвоили (или знали это раньше). Если же вы полагаете, что в str3 будет хранится строка "Hello world!", то вероятно, предыдущих объяснений оказалось недостаточно. Нельзя складывать указатели (и имена массивов).

Для конкатенации ( сложения ) следует использовать функции.

Есть две специальные функции:

char* strcat(char* dest, const char* source)

char* strncat(char* dest, const char* source, size_t size)

Эти функции добавляют к строке, на которую указывает dest, символы из строки source. Первая версия добавляет все символы до нуль-терминатора, вторая – максимум size символов. Результирующая строка завершается нуль-терминатором.

char str1[10]="Hello";

char str2[10]="World!";

char str3[20]= "";

strcat(s3,s1); //s3= Hello

strcat(s3,s2);//s3= Hello World

Кроме того, можно воспользоваться общей функцией sprintf так:

char str1[]="Hello ";

char str2[]="world";

char str3[]="!";

char str4[13];

sprintf(str4, "%s%s%s", str1, str2, str3);

Этот вариант удобнее, если нужно объединить более двух строк. Однако к его недостаткам относится типонебезопасность.

Функции поиска

Void *memchr(const void *s, int c, size_t n);

char *strchr(const char *s, int c);

size_t *strcspn(const char *s, const char *reject);

size_t *strspn(const char *s, const char *accept);

char *strpbrk(const char *s, const char *accept);

char *strchr(const char *s, int c);

char *strrchr(const char *s, int c);

char *strstr(const char *s, const char *substring);

char *strtok(char *s, const char *delim);

const void *s: указатель на массив, в котором производится поиск.

Int c: искомый символ.

size_t n: количество просматриваемых символов.

memchr ищет первое вхождение символа c в массиве s, просматривая при этом не более n символов. Возвращает указатель на символ c или NULL, если таковой не найден.

strcspn возвращает длину начального сегмента строки s, состоящего только из символов, не указанных в строке reject.

strspn возвращает длину начального сегмента строки s, состоящего только из символов строки accept.

strpbrk возвращает указатель на первое вхождение в строке s любого символа из строки accept. Если таких символов не обнаружено, то возвращается NULL.

strchr возвращает указатель на местонахождение первого совпадения с символом c в строке s или NULL, если такой символ не найден.

strrchr возвращает указатель на местонахождение последнего совпадения с символом c в строке s (т.е. поиск производится с конца строки в направлении к ее началу прим. перев.). Если символ не найден, то возвращается NULL.

strstr возвращает указатель на первую встретившуюся подстроку substring в строке s или NULL, если таковая не встретилась.

Задача.

Написать программу, удаляющую из строки лишние пробелы

т.е. между словами в строке не должно быть более одного пробела.

#include<iostream.h>

#include<conio.h>

#include<stdio.h>

#include<string.h>