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

Строки (символьные массивы)

В языке Си нет специально определенного строкового типа данных (как в Паскале). Символьные строки организуются, как массивы символов, т.о. на длину строки в Си нет ограничения. В этом состоит их важное преимущество перед строками в Паскале, где размер строки не может превышать 255.

Каждый символ строки хранится в отдельном байте ОП. В конце каждой строки компилятор помещает нулевой символ \0 (null – в явном виде он не отображается), поэтому каждая строка занимает на 1 байт ОП больше, чем символы в строке. По этой же причине строка, содержащая один символ, не совпадает с символьной константой.

Строка – это последовательность символов, заключенных в кавычки. Строка может содержать любые символы алфавита, кроме кавычек, символа \ и символа конца строки \n (переход на новую строку). Для размещения в строке данных символов необходимо перед ними разместить символ \ .

Например: “Он сказал: \”Привет!\””

Каждая строковая константа, даже если она идентична другой строковой константе, сохраняется в отдельном месте памяти.

Если две строковые константы записаны одна за другой, то во время компиляции компилятор объединяет их:

“Hello, “, “Friends” => “Hello, Friends”

Такой механизм предоставляет удобное средство для записи длинных строковых констант.

Строка описывается, как символьный массив.

Синтаксис описания:

char имя строки [максимальный размер];

например: char str[20];

Одновременно с описанием строка может инициализироваться. Возможны два способа инициализации строки:

1) с помощью строковой константы (последовательности символов, заключенной в кавычки):

При таком способе инициализации в конце строки компилятор сам ставит символ \0.

char s[10] = “строка”; - начальное значение задавать необязательно

под строку s будет выделено 10 байт памяти, из них первые 7 получат значения при инициализации (седьмой – нулевой символ).

char s[] = ”строка”; - начальное значение обязательно

будет сформирована строка s из 7 символов.

2) в виде списка символов (элементов массива):

char s[10] = {‘c’,‘т’,’р’,’о’,’к’,’а’,‘\0’}; - описание равнозначно первому.

Символьный массив можно определить без нулевого символа в конце:

char s[10] = {‘c’,‘т’,’р’,’о’,’к’,’а’};

но это приведет к проблемам с обработкой такой строки, так как будет отсутствовать ориентир на ее окончание.

Отдельные символы строки идентифицируются индексированными именами, например: s[0]=’c’, s[5]=’a’

Инициализация двумерного символьного массива строками:

char b[4][30]= Тексты в кавычках эквивалентны

{ скобочной записи:

“Результаты сессии”, {{…},{…},…};

“_________________”,

“ ФИО | Оценки “,

“ ________________”

};

Ввод-вывод символьных строк

Прототипы функций находятся в библиотеке стандартного ввода-вывода stdio.h.

gets();

Аргументом функций указывается имя

строки.

чтение строки, введенной с клавиатуры

Функция gets() читает строку из стандартного потока ввода stdin (высокоуровневый ввод-вывод) и помещает её по адресу, задаваемому параметром функции. Ввод строки заканчивается при обнаружении символа новой строки \n, который заменяется на нулевой символ \0.

puts();

Аргументом функций указывается имя

строки.

вывод строки на экран

Функция puts() записывает строку, адрес которой определяется значением параметра в круглых скобках, в стандартный поток вывода stdout. При выводе, завершающий \0 заменяется символом новой строки, то есть после вывода строки на экран курсор переходит в начало следующей строки.

getchar();

getc();

ввод одного символа с клавиатуры

Например:

ch = getchar ();

присваивание переменной символьного типа ch очередного символа, полученного из стандартного ввода.

putchar();

putc();

вывод одного символа на экран

Например:

putchar (ch);

выводит символ ch на экран.

getch();

ввод одного символа с клавиатуры без отображения его на экране

Пример: Ввести с клавиатуры строку символов и вывести ее на печать.

1 способ.

2 способ.

# include <stdio.h>

void main()

{

char str[100];

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

gets(str);

printf("Введенная строка\n ");

puts(str);

}

# include <stdio.h>

void main()

{

char str[100];

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

scanf("%s", &str);

printf("Введенная строка\n ");

printf("%s\n", str);

}

Ввод и вывод строки можно оформить в цикле:

3 способ.

4 способ.

# include <stdio.h>

void main()

{

char str[100];

int i;

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

for(i=0; i<10; i++)

str[i]=getchar();

printf("Введенная строка\n ");

for(i=0; i<10; i++)

putсhar(str[i]);

}

# include <stdio.h>

void main()

{

char str[100];

int i;

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

for(i=0; i<10; i++)

scanf(“%c”, &str[i]);

printf("Введенная строка\n ");

for(i=0; i<10; i++)

printf(“%c”, str[i]);

}