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

7.2 Ввод-вывод строк

1. Для ввода строк можно использовать следующие 2 функции:

- scanf(“%s”,имя_строки); - универсальная функция ввода

- gets(имя_строки); - специальная функция для

ввода строк с клавиатуры

Различие между scanf и gets состоит в том, что scanf вводит строку до 1-го пробела, в то время как gets вводит строку полностью, до нажатия клавиши ENTER.

Пример:

char fio[30];

scanf(%s”,fio);

gets(fio);

Вводим с клавиатуры:

Калашников И.П.ENTER

В результате работы функции scanf() в переменную fio запишется только фамилия (строка до первого пробела):

“Калашников”

В результате работы функции gets() в переменную fio запишется вся введенная с клавиатуры строка (до нажатия ENTER):

“Калашников И.П.”

2. Для вывода строк на экран можно использовать 2 функции:

- printf() c форматом %s

printf(“%s”,fio);

- puts(имя_строки);

puts(fio);

Эти функции выводят в строку полностью, но puts() всегда выводит курсор на начало следующей строки, а printf() переводит, если есть символ ‘\n’: “%s\n”.

7.3 Функции для работы со строками

Это стандартные функции, которые находятся в библиотеке языка С. Для их подключения необходимо в начале программы записать директиву препроцессора:

#include <string.h>

Рассмотрим основные, наиболее часто используемые строковые функции:

1. strlen(имя_строки) – определяет длину строки без учета символа ‘\0’.

char st[21]=”Program interruption\0”;

int l;

l=strlen(st);  l = =20

2. strcpy(str1,str2) – копирует строку str2 в строку str1, т. е. str2 str1.

Длина строки 1 должны быть не меньше длины строки 2.

char a[15], b[12]=”profiles”;

strcpy(a,b);  a==b

3. strcat(str1,str2); - дополняет строку str1 строкой str2, т. е. str1= str1+ str2

char c[25]=”abcdef”, d[10]=”ghijklmn”

strcat(c,d);  c==”abcdefghijklmn”

4. strcmp(str1,str2) – сравнение строк. Эта функция выполняет посимвольное вычитание str1-str2 и возвращает разность кодов ASCII первых двух несовпадающих символов:

strcmp(“AA”,”AA”) = = 0

strcmp(“AB”,”AA”) = = 1

strcmp(“AA”,”AB”) = = -1

Эта функция часто используется для сортировки строк по алфавиту.

8. Структуры и объединения в языке с

8.1 Описание структур

Структура – это средство для объединения нескольких разнотипных величин в одно целое. Например, данные о сотруднике фирмы:

  • фамилия – char[];

  • имя – char[];

  • отдел – int;

  • должность – char[]

  • зарплата – float

Способы описания структур:

1-й способ. Использование шаблона структуры:

/* Описание шаблона структуры */

struct <имя_шаблона>

{

тип1 имя_поля1;

...

типN имя_поляN;

};

/* Объявление переменных, массивов через шаблон структуры */

struct <имя_шаблона> перем1,..., перемN, массив[K];

где <имя_шаблона> - идентификатор для обозначения шаблона

типI имя_поляI – описание поля, входящего в структуру

Пример. Описать в виде структуры информацию о товарах, хранящихся на складе:

struct Рrod

{

char name[30];

int code;

float price;

int num;

};

struct Рrod pr1, pr2, mpr[20];

2-й способ. Создание нового типа данных в виде структуры.

/* Создание нового типа */

typedef stuct

{

тип1 имя_поля1;

. . .

типN имя_поляN;

} имя_типа;

/* Объявление переменных, массивов с новым типом в виде структуры */

имя_типа перем1,..., перемN, массив[k];

где typedef – это ключевое слово языка С, которое используется для создания новых (нестандартных) типов данных в программе

имя_типа – это обозначение нового типа данных в программе, имеющего вид структуры. Рекомендуется задавать имя типа с буквы Т... (от английского слова Type – тип).

Пример:

typedef struct

{

char name[30];

int code;

float price;

int num;

} TProd;

...

TProd pr1, pr2, mpr[20];

3-й способ. Одновременное описание структуры и объявление переменных, массивов

struct

{

тип1 имя_поля1;

. . .

типN имя_поляN;

} перем1,...,перемN,массив[k];

Пример:

struct

{

char name[30];

int code;

float price;

int num;

} pr1, pr2, mpr[20];

Области применения способов 1-3.

1 и 2 способы используются, когда:

а) структура является аргументом функции:

void fst(TProd a,...);

б) в разных функциях программы эта структура используется для описания переменных:

void f1(...)

{

TProd f;

...

}

void f2(...)

{

TProd g;

...

}

3-й способ применяется, когда структура используется только внутри одной функции main() или другой функции.