Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Введение в программирование на С.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
930.82 Кб
Скачать

§5 Символьная строка

5.1 Объявление символьной строки

Строка – это нуль или более символов, заключенных в двойные кавычки. Например: “Привет!!!”, и кавычки не входят в строку. Фактически строковая константа – эта массив символов. Во внутреннем представлении строки в конце автоматически помещается нуль-символ ‘\0’, поэтому для строки требуется на один байт больше памяти. Строка доступна через указатель на первый символ в строке, а значением строки является адрес ее первого символа. В этом смысле строки подобны массивам, потому что массив так же является указателем на свой первый элемент. Если задается размер массива, а строка длиннее, то выдается сообщение об ошибке. Если задан размер массива, а строка короче, то лишние элементы массива содержат так называемый “мусор”. Необходимо запомнить, что символьная константа и строка, содержащая один символ не одно и тоже!!!, т. е. ‘x’!=”x”, т.к. “x” – это массив символов, который кроме символа x содержит еще и символ ‘\0’.

Объявления символьной строки

char color[]=”синий”;

char color[6]=”синий”;

char *color=”синий”;

char color[]=” ’с’ ‘и’ ‘н’ ‘и’ ‘й’ ‘\0’ ”;

0

1

2

3

4

5

‘с’

‘и’

‘н’

‘и’

‘й’

‘\0’

Все три объявления строки возможны, но предпочтительны первые два.

Функции ввода символьной строки

char* gets( char *buffer); считывает символьную строку из стандартного входного потока и помещает ее по адресу, заданному указателем buffer. Прием строки заканчивается, если функция обнаружит символ ‘\n’ и данный символ заменяется на символ ‘\0’.

Возвращает указатель на считанную строку.

int scanf(const char * format, *buffer) считывает символьную строку из стандартного входного потока и помещает ее по адресу, заданному указателем buffer. Прием строки заканчивается, если функция обнаружит символ ‘\n’или” ” и данный символ заменяется на символ ‘\0’.

Возвращаемое значение – число считанных полей

Функции вывода символьной строки

int puts( const char *string ); записывает символ в стандартный поток данных и символ ‘\0’заменяется на ’\n’.

Возвращает код переданного символа..

int printf(const char * format, ……); записывает символ в стандартный поток вывода символ ‘\0’ игнорируется.

Возвращаемое значение – число записанный в поток символ

Для просмотра введенных символов строки используется

Примеры:

  1. Ввести строку и распечатать каждый ее символ с новой строки

#include<stdio.h>

Void main()

{

char x[100];

int i;

puts("Введите строку: ");

gets(x);

for(i=0;x[i]!='\0';i++)

printf("%c\n",x[i]);

}

  1. Ввести строку определить, сколько символов содержит данная строка

#include<stdio.h>

Void main()

{

char x[100];

int i;

puts("Введите строку: ");

gets(x);

for(i=0;x[i]!='\0';i++);

printf("\n%s - содержит %d символов\n",x,i);

}

  1. Ввести строку и распечатать данную строку в обратном порядке.

  2. Ввести строку и переписать ее в обратном порядке в новую строку.

  3. Ввести строку заменить символ «а» на символ «!» в данной строке.

  4. Посчитать сколько раз в словах встречается буква «а» и поменять первый и последний символ

  5. Посчитать число слов

  6. Написать функцию присвоения строк. Прототип функции char* prisv(char*,char*); т.е. присвоить вторую строку первой и вернуть первую строку.

  7. Написать функцию добавления строк. Прототип функции char* dobav(char*,char*); т.е. добавить вторую строку первой и вернуть первую строку.

  8. Написать функцию, которая считает количество введенных символов. Прототип функции int* dlina(char*);получает строку и возвращает количество введенных символов

  9. Написать функцию, которая сравнивает строки и возвращает: 0 если строки равны; 1 если в первой строке встретился символ больше чем во второй строке и -1 в противном случае. Прототип функции int* srav(char*, char*);

#include<stdio.h>