Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛЕКЦИИ_ПО_ПРОГРАММИРОВАНИЮ_ПРЕПОД_3403_220301.doc
Скачиваний:
27
Добавлен:
06.11.2018
Размер:
845.31 Кб
Скачать

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 дает результат на единицу больше, т.к. при этом учитывается нуль-символ, помещенный в конец строки.

***************************************************************