Результат работы программы

Содержимое памяти ЭВМ

Результат работы программы

Результат работы программы

Программма

Пример

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); }    

Результат работы программы

Проверьте, пожалуйста, вашу последнюю запись.Проверьте, пожалуйста, вашу последнюю запись. Проверьте, пожалуйста, вашу последнюю запись.