В конец символьной строки не требуется обязательно добавлять нуль, компилятор делает это автоматически. — КиберПедия 

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...

Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...

В конец символьной строки не требуется обязательно добавлять нуль, компилятор делает это автоматически.

2023-01-02 18
В конец символьной строки не требуется обязательно добавлять нуль, компилятор делает это автоматически. 0.00 из 5.00 0 оценок
Заказать работу

Объявление строки

• Обращение к элементам строки осуществляется по индексу, так же как и к элементу массива. Соответственно и нумерация символов начинается с 0.

• Операция присваивания одной строки другой не определена и может выполняться с помощью цикла или функций стандартной библиотеки <string.h>

char src[10], dest[10];

for (int i = 0; i <= strlen (src); i++)     dest[i] = src[i];

Строки

• Стандартная библиотека предоставляет возможности копирования, сравнения, объединения строк, поиска подстроки, определения длины строки и т.д.

• Библиотечные функции работы со строками С объявлены в стандарте устаревшими, так как они не обеспечивают необходимой безопасности.

<string.h> (<cstring>) — функции работы со строками в стиле С

<string.h> (<cstring>) — функции работы со строками в стиле С

<string.h> (<cstring>) — функции работы со строками в стиле С

Строки

#include <stdio.h>

#include <string.h>

int main(){

char s[5], passw[] = "kuku";

int i, k = 0;

for (i = 0;!k && i<3; i++){

       printf("\nвведите пароль:\n");

       gets(s);                                         if (strstr (s,passw))k = 1;

}

if (k) printf ("\ n пароль принят");

else printf ("\ n пароль не принят");

}

Строки

#include "stdafx.h"

#include <string.h>

#include <stdio.h>

char string[] = "A string \t of,,tokens \n and                        some more tokens";

char seps[] = ",\t\n", *token;

Void main(void)

{ token = strtok (string, seps);

while(token!= NULL)

{ printf("%s ", token);

  token = strtok(NULL, seps);

} }

Результаты:

A string of tokens and some more tokens

Массивы строк

Char <Имя> [<Количество строк>]

           [<Мах длина строки>] [= <Значение>];

char str [3][80] = {

{'1','2','3','4','5'},

{'x','y','z'},

{'A','B','C','D'}

     };

char str2[3][80] = {

"0123456789",

"x_y_z",

"A B C D" };

Массивы строк

char ms[4][7]={″весна″,″осень″,

             ″зима″,″лето″};

Строки

• В С++ поддерживаются два типа строк – встроенный тип, доставшийся от С, и класс string из стандартной библиотеки С++.

• Класс string обеспечивает индексацию, присваивание, сравнение, добавление, объединение строк и поиск подстрок, а также преобразование из С-строк, то есть массивов типа char, в string, и наоборот.

Структуры
объединения

СТРУКТУРЫ ДАННЫХ

Структуры

• В отличие от массива, все элементы которого однотипны, структура может содержать элементы разных типов.

• В языке С++ структура является видом класса и обладает всеми его свойствами, но во многих случаях достаточно использовать структуры так, как они определены в языке С.

struct [ имя_типа ]

{ тип_1 элемент_1; тип_2элемент_2; *тип_n элемент_n;}

[ список_описателей ];

Структуры

• Элементы структуры называются полями структуры и могут иметь любой тип, кроме типа этой же структуры, но могут быть указателями на него.

• Если отсутствует имя типа, должен быть указан список описателей переменных, указателей или массивов.

Структуры

struct employee {

char Name [21]; // имя

char Surname [21]; // фамилия

Int age;       // возраст

Double hourlysalary; // почасовой оклад

};

Идентификатор employee является именем-этикеткой (tag name), дескриптором, именует структуру и используется совместно с ключевым словом struct для объявления переменных структурного типа.

Структуры

struct employee new_employee,stack[120];

struct employee {

char Name [21]; // имя

char Surname [21]; // фамилия

Int age;        // возраст

Double hourlysalary; // почасовой оклад

} new_employee, stack[120];

struct {

char Name [21]; // имя

char Surname [21]; // фамилия

Int age;        // возраст

Double hourlysalary; // почасовой оклад

} new_employee, stack[120];

Структуры

Синтаксис инициализации структур аналогичен инициализации массивов.

При инициализации структуры ее элементы (инициализаторы) должны соответствовать заданному типу и отделяться друг от друга запятыми.

struct employee {

char Name [20];  

char Surname [20];

Int age;         

Double hourlysalary;

} new_employee =

  { "Peter", "Smith", 25, 6.78 };

Структуры

struct complex {

float real, im;

} compl [2][3]={

{{1, 1}, {1, 1}, {1, 1}},

{{2, 2}, {2, 2}, {2, 2}}

};

Для переменных одного и того же структурного типа определена операция присваивания, при этом происходит поэлементное копирование.

Структуры

#include <stdio.h>

int main(void){

struct {

int a;

int b;

} x, y;

x. a = 10;

y = x; /* присваивание одной структуры другой */

printf("%d", y.a);

return 0;

}

Структуры

Доступ к полям структуры выполняется с помощью операций выбора. (точка) при обращении к полю через имя структуры:

имя_переменной_структуры. имя_поля

new_employee. Name = «Петров ";

new_employee.hourlysalary = 21.0;

stack [4]. hourlysalary = 121.5;

Структуры

Как и в других массивах переменных языка С, в массивах структур индексирование начинается с нуля. Членами структуры могут быть также массивы или структуры. Когда одна структура является членом другой, она называется вложенной:

struct X = {

int A[7][8];

float b;

char ch;

struct employee Emp2;

} Y;

Структуры

Инициализация элементов двухмерного массива А может быть такой:

Y. A [2][5] = 99;

Инициализация вложенной структуры может быть следующей:

Y.Emp2.hourlysalary = 12.75;

struct A {int a; double x;};

struct B {A a; double x;} x[2];

x [0]. a. a = 1;

x [1].х = 0.1;

 Объединения

Объединение (union) – это тип, который позволяет хранить различные типы данных в одном пространстве памяти (но не одновременно).

union <Имя объединения> {

      <Список элементов объединения>}

                     [<Список переменных [и значений]>];

union mem {

double d;

  long l;

int k[2];

};

Объединения

Длина объединения равна наибольшей из длин его полей. В каждый момент времени в переменной типа объединение хранится только одно значение, и ответственность за его правильное использование лежит на программисте.


Поделиться с друзьями:

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.029 с.