- •Конспект лекций по предмету
- •Раздел 1. Основы языка.
- •Тема 1. История создания языка Си. Достоинства языка. Использование языка Си.
- •Тема 2.
- •Структура простой программы.
- •Описание переменных.
- •3.Использование комментариев. Читаемость.
- •Зарезервированные слова.
- •Раздел.2 Элементы языка. Выражения.
- •Тема 3.
- •3. Выражения
- •Раздел 3. Операторы языка. Условный оператор if
- •Оператор switch
- •Операторы цикла
- •Цикл с параметром (for)
- •Операторы передачи управления
- •Оператор goto
- •Оператор break
- •Оператор continue
- •Оператор return
- •Раздел 4. Указатели и массивы Указатели
- •Инициализация указателей
- •Присваивание указателю адреса существующего объекта:
- •Присваивание указателю адреса области памяти в явном виде:
- •Присваивание пустого значения:
- •Выделение участка динамической памяти и присваивание её адреса указателю:
- •Внимание!
- •Объявляется массив из 10 указателей на функции без параметров, возвращающих указатели на int.
- •Раздел 5. Строки. Работа со строковыми данными
- •Функции работы со строками и символами
- •Символьные строки и строковые функции
- •Ввод-вывод строк средствами с.
- •1) Scanf, printf – вводит/выводит одно слово:
- •2) Ввести предложение:
- •3) Специальные средства ввода – вывода строк – gets и puts
- •Различия между массивом символов и указателем на строку
- •Массивы строк
- •Функции с для обработки строк
- •Strcat(), strncat(). Соеденение строк.
- •Другие функции для строк(краткое описание)
- •Раздел 6. Структуры. Структуры (struct)
- •Раздел 7. Функции (подпрограммы). Функции
- •Объявление и определение функций
- •Глобальные переменные
- •Возвращаемое значение
- •Параметры функции
- •Передача массивов в качестве параметров
- •Раздел 8. Файлы(потоки) Функции ввода/вывода
- •Открытие потока
- •Ввод/вывод в поток
- •Закрытие потока
- •Обработка ошибок
Символьные строки и строковые функции
Срока – это массив типа Char, завершающийся кодом нуль (\0)
Длину строки удобно задавать константой, т. к. при возможном изменении длины строки нужно будет изменить программу только в этом месте:
const int len_str = 80;
char str[len_str]; // в этой строке можно использовать не 80, а 79 символов
// (последний – «ноль»)
Строку можно инициализировать. При этом «ноль» создается автоматически:
char a[100]=”это строка”; // 10+1 = 11 байтов -проинициализированная строка
char *st=”Это строка”; // это указатель на строку-константу, его изменять
// нельзя
В динамической памяти строка создается так:
char *p=new char(m); // m определяется заранее
С++
Ввод-вывод строк средствами С++
Можно использовать cin, cout и другие функции.
сhar s[80];
cin>>s; // вводит последовательность символов до ближайшего
//пробела (т.е. вводит одно слово)
Ввести предложение:
Можно использовать метод getline или get класса IOSTREAM, объектом которого является cin:
char s[10];
cin.getline(s,80); /* считывает из потока 79 символов (или меньше если встретится (т.е. \n) и записывает их в строку s. Символ \n тоже считывается из потока, вместо него в строку помещается «ноль» */
cout<<s<<endl;
cin.get(s,80); /* Работает аналогично, только символ \n из потока не считывается ( т.е. не удаляется из входного потока)*/
cout<<s<<endl;
Поэтому никогда 2 раза подряд не применяйте cin.get(s,n) не удалив из потока \n. Сделать это можно, вызвав cin.get() без параметров. Тогда код будет выглядеть так:
cin.get(s,80); // Ввести строку
cin.get(); //удалить Enter из потока
Cin.get(s,80); // Ввести строку
cin.get(); // удалить Enter из потока
или так:
cin.getline(s,80);
cin.getline(s,80);
С
Ввод-вывод строк средствами с.
1) Scanf, printf – вводит/выводит одно слово:
#include <stdio.h>
int main(void)
{
const int n=10;
char s[n];
scanf(“%s”,s); /* ввод до ближайшего пробела, символ & опускать! т.к. имя строки это указатель на её начало*/
printf(“%S”,s);
return 0;
}
2) Ввести предложение:
scanf(“%10c”,s); // ввод строки с пробелами 10 это кол-во вводимых символов
printf(“%15s”,s); // выводит строку в 15 позиций, выравнивание по правому краю
3) Специальные средства ввода – вывода строк – gets и puts
const int n =10;
char s[n];
gets(s); // это лучший способ ввода строки в С
puts(s); // это лучший способ вывода строки в С
gets(s) – возвращает указатель на строку s. При ошибке возвращает NULL
puts(s) – в случае нормального нормального выполнения возвращает отрицательное число, в случае ошибки – EOF
Итог: printf удобно использовать при выводе данных различных типов. Если выводить только строки, то puts.
(Для ввода-вывода одного символа используют спец. функции:
GETCHAR()
PUTCHAR() )
