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

Ввод – вывод строк

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

scanf(″%s″, S);

Спецификатор %s указывает, что будет читаться строка. Операция взятия адреса перед именем строки в данном случае не нужна. Функцией scanf() по формату %s строка вводится только до первого пробела!

scanf(″%80s″, S);

Спецификатор ″%80s″ указывает на то, что будет прочитано не более 80 символов, что позволяет избежать переполнения строки.

Для ввода фраз, состоящих из слов, разделенных пробелами, используется функция

gets(имя строковой переменной);

Функция читает символы из строки ввода до тех пор, пока не встретит символ новой строки ‘\n’, который создается нажатием клавиши <ввод>. К прочитанным символам (без ’\n’) присоединяется нуль-символ ‘\0’ и полученное значение присваивается соответствующей переменной-строке.

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

printf(″Вы ввели %s″, S);

Функция puts(имя строковой переменной); выводит на экран дисплея строку символов, автоматически добавляя к ней символ перехода на начало новой строки (\n).

Аналогом такой функции будет: printf(“%s \n”,имя строковой переменной);

Пример: Ввести строку. Посчитать в ней все буквы «а».

#include<stdio.h>

#include<string.h>

main()

{char s[20];

int i,k=0;

puts("введите строку");gets(s);

k=0;for(i=0;i<strlen(s);i++) if(s[i]= ='a')k++;

printf(“количество=%d\n”,k);}

  1. Функции работы с символьными массивами в ЯП Си (gets, puts, strlen, strcmp). Примеры использования.

В языке Си нет специально определенного строкового типа данных. Строка в языке Си представляет собой массив, состоящий из символов, последним из которых является символ \0. Нулевой символ позволяет функциям, работающим со строками, обнаруживать концы строк. На длину символьного массива в Си нет ограничения. Индекс первого символа строки — 0.

Строка описывается как символьный массив.

Например:

char S[20];

Большинство действий со строковыми объектами в Си выполняются при помощи стандартных библиотечных функций, для этого включите в начало программы заголовочный файл string.h: #include <string.h>, чтобы использовать строковые функции.

Ввод – вывод строк

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

scanf(″%s″, S);

Спецификатор %s указывает, что будет читаться строка. Операция взятия адреса перед именем строки в данном случае не нужна. Функцией scanf() по формату %s строка вводится только до первого пробела!

scanf(″%80s″, S);

Спецификатор ″%80s″ указывает на то, что будет прочитано не более 80 символов, что позволяет избежать переполнения строки.

Для ввода фраз, состоящих из слов, разделенных пробелами, используется функция

gets(имя строковой переменной);

Функция читает символы из строки ввода до тех пор, пока не встретит символ новой строки ‘\n’, который создается нажатием клавиши <ввод>. К прочитанным символам (без ’\n’) присоединяется нуль-символ ‘\0’ и полученное значение присваивается соответствующей переменной-строке.

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

printf(″Вы ввели %s″, S);

Функция puts(имя строковой переменной); выводит на экран дисплея строку символов, автоматически добавляя к ней символ перехода на начало новой строки (\n).

Аналогом такой функции будет: printf(“%s \n”,имя строковой переменной);

Определение длины строк

Функция strlen(имя строковой переменной) возвращает длину строки в символах(при этом завершающий нулевой байт не учитывается).

Копирование строк

Оператор присваивания для строк не определен!

Для строковых переменных s1 и s2 операция s1 = s2; не определена.

Чтобы корректно скопировать одну строку в другую используется функция strcpy(s1, s2); - копирует значение строки s2 в строку s1, включая завершающие нули.

Сравнение строк

Если i – переменная типа int, и если s1 и s2 – указатели на char, то оператор

i = strcmp(s1, s2); установит i равной –1 или другому отрицательному числу, если строка s1 в алфавитном порядке меньше строки s2. Если строки в точности совпадают, функция возвратит нуль. Если строка s1 в алфавитном порядке больше строки s2, она вернет +1 или другое положительное число.

Функция strcmp() чувствительна к регистру букв – при сравнении строчные буквы считаются большими, чем их прописные эквиваленты (так как буквы нижнего регистра имеют большие ASCII-значения, чем буквы верхнего регистра).

Пример: Ввести строку. Посчитать в ней все буквы «а».

#include<stdio.h>

#include<string.h>

main()

{char s[20];

int i,k=0;

puts("введите строку");gets(s);

k=0;for(i=0;i<strlen(s);i++) if(s[i]= ='a')k++;

printf(“количество=%d\n”,k);}

  1. Структурированный тип данных структура в ЯП Си (определение, объявление, обращение к полям, пример).