Основные функции стандартной библиотеки string.H
Основные функции стандартной библиотеки string.h приведены в таблице.
Функция | Описание |
char *strcat(char *s1,char *s2) | присоединяет s2 к s1, возвращает s1 |
char *strncpy(char*s1, char *s2, int n) | копирует не более n символов строки s2 в строку s1, возвращает s1; |
int strcmp(char *s1,char *s2) | сравнивает s1 и s2, возвращает значение 0, если строки эквивалентны |
int strncmp(char *s1,char *s2, int n) | сравнивает не более n символов строк s1 и s2, возвращает значение 0, если начальные n символов строк эквивалентны |
int strlen(char *s) | возвращает количество символов в строке s |
char *strset(char *s,char c) | заполняет строку s символами, код которых равен значению c, возвращает указатель на строку s |
char *strnset(char *s,char c, int n) | заменяет первые n символов строки s символами, код которых равен c, возвращает указатель на строку s |
Пример использования функций
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
char m1[80] = "Первая строка";
char m2[80] = "Вторая строка";
char m3[80];
system("chcp 1251");
system("cls");
strncpy(m3, m1, 6); // не добавляет '\0' в конце строки
puts("Результат strncpy(m3, m1, 6)");
puts(m3);
strcpy(m3, m1);
puts("Результат strcpy(m3, m1)");
puts(m3);
puts("Результат strcmp(m3, m1) равен");
printf("%d", strcmp(m3, m1));
strncat(m3, m2, 5);
puts("Результат strncat(m3, m2, 5)");
puts(m3);
strcat(m3, m2);
puts("Результат strcat(m3, m2)");
puts(m3);
puts("Количество символов в строке m1 равно strlen(m1): ");
printf("%d\n", strlen(m1));
strnset(m3, 'f', 7);
puts("Результат strnset(m3, 'f', 7)");
puts(m3);
strset(m3, 'k');
puts("Результат strnset(m3, 'k')");
puts(m3);
getchar();
return 0;
}
Результат выполнения
Сложные типы данных в Си
Структура — это объединение нескольких объектов, возможно, различного типа под одним именем, которое является типом структуры. В качестве объектов могут выступать переменные, массивы, указатели и другие структуры.
Структуры позволяют трактовать группу связанных между собой объектов не как множество отдельных элементов, а как единое целое. Структура представляет собой сложный тип данных, составленный из простых типов.
Общая форма объявления структуры:
struct тип_структуры
{
тип ИмяЭлемента 1;
тип ИмяЭлемента 2;
. . .
тип Имя Элемента n;
};
После закрывающей фигурной скобки } в объявлении структуры
обязательно ставится точка с запятой.
Пример объявления структуры
struct date
{
int day; // 4 байта
char *month; // 4 байта
int year; // 4 байта
};
Поля структуры располагаются в памяти в том порядке, в котором они объявлены:
В указанном примере структура date занимает в памяти 12 байт. Кроме того, указатель *monthпри инициализации будет началом текстовой строки с названием месяца, размещенной в памяти.
При объявлении структур, их разрешается вкладывать одну в другую.
Пример
struct persone
{
char lastname[20]; // фамилия
char firstname[20]; // имя
struct datebd; // дата рождения
};