Результат работы программы
Содержимое памяти ЭВМ
Результат работы программы
Результат работы программы
Программма
Пример
int n;
char *p;
| printf( | "\пСколько | букв | в | Вашем | имени?" ) ; |
| scanf ( | "%u", &n); | ||||
| p=(char | *)malloc( n+1 ), | ||||
| printf( | "\пВведите | Ваше | имя: "); | ||
| scanf(" | %s", p); |
Вывод строк
Для вывода строк наиболее часто используют функции puts и printf.
Функция puts выводит на экран строку с заданным адресом, добавляя в завершение символ новой строки. Выводятся все символы из строки, пока не встретится завершающий нуль-символ. У функции только один аргумент, являющийся указателем строки.
| #include <stdio.h> | ||||
| #define | DEF "Я строка #d | efine." | ||
| main ( { char | ) | |||
| strl [ ]="Ma( | :сив | инициализирован | мной."; | |
| char | *str2="Указатель | инициализирован | мной."; | |
| puts | ("Я аргумент | функции puts."); | ||
| puts | (DEF); | |||
| puts | (strl); | |||
| puts | (str2); | |||
| puts | (&strl[4]); | |||
| puts } | (str2 + 4); |
Я аргумент функции puts.
Я строка #define.
Массив инициализирован мной.
Указатель инициализирован мной.
ив инициализирован мной,
атель инициализирован мной.
Функция printf. Мы рассмотрели подробно данную функцию. Подобно puts, она использует указатель строки в качестве аргумента. Функция printf менее удобна, чем puts, но более гибкая.
Разница между puts и printf заключается в том, что printf не переводит автоматически курсор на новую строку. Так,
printf("%s\n", string); дает то же самое, что и
puts(string); . Первый оператор требует ввода большего числа символов и большего времени при выполнении на компьютере. С другой стороны, printf позволяет легко объединять строки для печати их в одной строке. Например:
/?гш(/("Хорошо, %s, %s.\n", name, MSG); объединяет слово "Хорошо" с именем пате и с символьной строкой MSG в одну строку.
Примеры обработки строк
Программа «обрезания» строки [14]
| #include <stdio.h> | ||||
| #include <string.h> | ||||
| main() { char message[]="C | ||||
| трока | символов"; | |||
| puts(message); | ||||
| delmessage(messag | е,Ю) | г | ||
| /*вызов функции | delmessage | */ | ||
| puts(message); } | ||||
| /^delmessage() — фун | кция | укорачивает | строку*/ | |
| /^message, оставляя | лишь | первые size | символов. | */ |
| void delmessage(str, | size | ) | ||
| char *str; | ||||
| int size; { | ||||
| if (strlen(str)>size) | ||||
| *(str+size)= } | '\0'; |
| С т р о | к а си | м в | о л | о | в |
| С т р о | к а си | м | |||
| 1 <----- | -> 1 | ||||
| символов |
Строка сим'\0'олов'\0'
Программа объединения двух строк [14]
#include <stdio.h>
#include <string>
char flower[40];
char addition[]="ы хорошо пахнут";
/^массив добавка*/
main()
{
puts("Назовите ваш любимый цветок"); gets(flower);
strcat(flower,addition);
puts(flower); }
| Назовите | ваш | любимый | цветок | |
| Пион | <Enter> | |||
| Пионы | хор | ошо | пахнут |
Замечание: массив flower должен содержать достаточно места, чтобы поместить addition.
Программа сравнения двух строк [14]
#include <stdio.h> #include <string.h> #define reply "Грант"
main ()
{
char name[40];
puts("Кто похоронен в могиле Гранта?");
gets(name);
while(strcmp(name, reply)!=0)
{
puts("Неверный ответ.\п"); gets(name);
puts("Правильно!");
Программа копирования строк [14]
| #include < stdio.h) | ||
| #define WORDS "Проверьте, пожалуйста, | вашу | последнюю |
| запись." | ||
| main ( ) { static char *orig = WORDS; | ||
| static char copy[40]; | ||
| puts(orig); | ||
| puts(copy); | ||
| strcpy(copy, orig); | ||
| puts(orig); | ||
| puts(copy); } |
Результат работы программы
Проверьте, пожалуйста, вашу последнюю запись.Проверьте, пожалуйста, вашу последнюю запись. Проверьте, пожалуйста, вашу последнюю запись.