Результат работы программы
Содержимое памяти ЭВМ
Результат работы программы
Результат работы программы
Программма
Пример
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); } |
Результат работы программы
Проверьте, пожалуйста, вашу последнюю запись.Проверьте, пожалуйста, вашу последнюю запись. Проверьте, пожалуйста, вашу последнюю запись.