- •Алфавит языка
- •Идентификаторы
- •Структура программы
- •Переменные
- •Константы
- •Типы данных
- •Выражения и операции
- •Арифметические операции.
- •Выражения и операции
- •Операции отношения.
- •Логические операции.
- •Структура программы
- •Форматированный ввод с клавиатуры.
- •Scanf(“форматная_строка”, список_аргументов);
- •Форматированный вывод на экран.
- •Printf(“форматная_строка”, список_аргументов);
- •Операция присваивания.
- •Условный оператор if
- •If (выражение) оператор1; else оператор2;
- •If (выражение) оператор;
- •Оператор выбора (переключатель)
- •Операторы циклов
- •Цикл с предусловием while
- •Операторы циклов
- •Цикл с постусловием do-while
- •Операторы циклов
- •Цикл с параметром for
- •Массивы
- •Массивы
- •Одномерные массивы
- •Массивы
- •Массивы
- •Двумерные массивы
- •Массивы
- •Двумерные массивы
- •Операции над элементами двумерного массива
- •Функции
- •Функции
- •Ввод – вывод строк
- •Ввод – вывод строк
- •Структуры
- •Структуры
- •Функции работы с файлами
- •Указатели
- •Операции над указателями
- •Динамическое выделение памяти
Ввод – вывод строк
Ввод строки символов с клавиатуры:
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);}
Функции работы с символьными массивами в ЯП Си (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);}
Структурированный тип данных структура в ЯП Си (определение, объявление, обращение к полям, пример).
