- •Предисловие.
- •1. Введение.
- •1.1. История создания языка си.
- •1.2. Стандарты языка си.
- •2. Основные сведения, необходимые для создания программ на языке си.
- •2.1 Процесс создания исполняемого файла.
- •2.2 Распределение памяти программы.
- •2.3 Некоторые основные понятия.
- •2.4 Данные.
- •2.5 Структура простой программы.
- •3. Определение размеров типов данных и объектов.
- •4. Строки и строковые константы.
- •5. Директива препроцессора # define.
- •6. Функции форматированного ввода – вывода.
- •6.1 Функция форматированного вывода printf().
- •6.2 Функция форматированного ввода scanf().
- •7. Операции и операторы.
- •7.1 Арифметические операции
- •7.4 Порядок выполнения операций.
- •8. Выражения и операторы
- •8.1 Выражения.
- •8.2 Операторы.
- •8.3 Составные операторы.
- •8.4 Преобразование типов.
- •8.5 Операция приведения типов.
- •9. Функции ввода и вывода символов.
- •9.1 Функции getchar() и putchar().
- •9.2 Функции getch() и getche().
- •9.3 Ввод и вывод последовательности символов.
- •9.4 Подсчет символов, вводимых с клавиатуры.
- •9.5 Вывод символов из вводимого с клавиатуры файла.
- •9.6 Переключение ввода-вывода данных.
- •10. Принятие решений.
- •10.1 Оператор если (if).
- •10.2 Оператор если - иначе (if else).
- •10.3 Множественный выбор на основе операторов if, else.
- •10.5 Приоритеты операций отношения.
- •10.6 Логические операции (and, or, not).
- •10.7 Операция условия ?:.
- •10.8 Множественный выбор на основе операторов switch, break, default.
- •11. Циклы.
- •11.1 Цикл пока (while).
- •11.2 Цикл для (for).
- •11.4 Операция запятая ,.
- •11.5 Цикл делай пока (do while).
- •11.6 Вложенные циклы.
- •11.7 Операторы выход из структуры (break), продолжение (continue), безусловный переход (to go).
- •Литература.
- •Оглавление.
4. Строки и строковые константы.
/* ПРОГРАММА:
praise_1.c – похвала имени 1 (работа со строками и строковыми константами).
*/
/*#############################################*/
/*============================= include */
#include<stdio.h>
/*============================= define */
#define PRAISE "Вот эта да, какое великолепное имя!"
/*============================= main() */
main()
{/*.---------------------------.begin main() */
char name [50];
printf(" Как вас зовут? \n" );
scanf(" %s", name); /* ввод имени, например, Бармалей Фобос */
printf(" Привет, %s. %s\n" , name, PRAISE);
return 0;
}/*.---------------------------.end main() */
/*#############################################*/
РЕЗУЛЬТАТ РАБОТЫ ПРОГРАММЫ.
Как вас зовут?
Бармалей Фобос. Привет, Бармалей. Вот эта да, какое великолепное имя!
ПОЯСНЕНИЯ К ПРОГРАММЕ.
-
Функция scanf() при вводе строки Бармалей Фобос читает только имя Бармалей, т.к. встретив какой-нибудь разделитель (пробел, символ табуляции или перевода строки), функция scanf() прекращает ввод символов, т.е. она вводит только одиночные слова, а не целую фразу. После ввода последнего символа функция scanf() автоматически ставит за ним нуль символ \0.
-
Для ввода целых фраз в языке Си имеются другие функции, например функция gets(), предназначенная для обработки строк общего вида.
-
PRAISE - "символическая строковая константа".
-
Кавычки, в которые заключена фраза, следующая за строковой константой PRAISE, идентифицируют эту фразу как строку, и поэтому в ее конец будет помещен нуль – символ \0.
-
Символ ‘x’ не то же самое, что строка "х". Первое различие: символ 'х' - объект одного из основных типов (char), в то время как строка "х" - объект производного типа (массива элементов типа char). Второе различие: строка "х" состоит из двух символов - символа 'x' и нуль - символа \0.
***************************************************************
/* ПРОГРАММА:
praise_2.c – похвала имени 2 (работа со строками и строковыми константами).
*/
/*#############################################*/
/*============================= include */
#include<stdio.h>
/*============================= define */
#define PRAISE "Вот эта да, какое великолепное имя!"
/*============================= main() */
main()
{/*.---------------------------.begin main() */
char name [50];
printf(" Как вас зовут?\n");
scanf(" %s", name); /* ввод имени, например, Деймос */
printf(" Привет, %s. %s\n" , name, PRAISE);
printf(" Ваше имя состоит из %d букв и занимает %d ячеек памяти. \n",
strlen (name), sizeof name);
printf(" Фраза состоит из %d букв", strlen (PRAISE));
printf(" и занимает %d ячеек памяти. \n", sizeof PRAISE);
return 0;
}/*.---------------------------.end main() */
/*#############################################*/
РЕЗУЛЬТАТ РАБОТЫ ПРОГРАММЫ.
Как вас зовут ?
Деймос
Привет, Деймос. Вот это да, какое великолепное имя!
Ваше имя состоит из 6 букв и занимает 50 ячеек памяти.
Фраза состоит из 35 букв и занимает 36 ячеек памяти (фраза +/0).
ПОЯСНЕНИЯ К ПРОГРАММЕ.
-
При обработке константы PRAISE функция strlen() дает нам точное число символов (включая пробелы и знаки пунктуации) в строке.
-
При обработке константы PRAISE функция sizeof дает результат на единицу больше, т.к. при этом учитывается нуль-символ, помещенный в конец строки.
***************************************************************