Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект_лек-3_на рус языке.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
298.5 Кб
Скачать

Символьные строки и строковые функции

Срока – это массив типа Char, завершающийся кодом нуль (\0)

Длину строки удобно задавать константой, т. к. при возможном изменении длины строки нужно будет изменить программу только в этом месте:

const int len_str = 80;

char str[len_str]; // в этой строке можно использовать не 80, а 79 символов

// (последний – «ноль»)

Строку можно инициализировать. При этом «ноль» создается автоматически:

char a[100]=”это строка”; // 10+1 = 11 байтов -проинициализированная строка

char *st=”Это строка”; // это указатель на строку-константу, его изменять

// нельзя

В динамической памяти строка создается так:

char *p=new char(m); // m определяется заранее

С++

Ввод-вывод строк средствами С++

Можно использовать cin, cout и другие функции.

сhar s[80];

cin>>s; // вводит последовательность символов до ближайшего

//пробела (т.е. вводит одно слово)

Ввести предложение:

Можно использовать метод getline или get класса IOSTREAM, объектом которого является cin:

char s[10];

cin.getline(s,80); /* считывает из потока 79 символов (или меньше если встретится (т.е. \n) и записывает их в строку s. Символ \n тоже считывается из потока, вместо него в строку помещается «ноль» */

cout<<s<<endl;

cin.get(s,80); /* Работает аналогично, только символ \n из потока не считывается ( т.е. не удаляется из входного потока)*/

cout<<s<<endl;

Поэтому никогда 2 раза подряд не применяйте cin.get(s,n) не удалив из потока \n. Сделать это можно, вызвав cin.get() без параметров. Тогда код будет выглядеть так:

cin.get(s,80); // Ввести строку

cin.get(); //удалить Enter из потока

Cin.get(s,80); // Ввести строку

cin.get(); // удалить Enter из потока

или так:

cin.getline(s,80);

cin.getline(s,80);

С

Ввод-вывод строк средствами с.

1) Scanf, printf – вводит/выводит одно слово:

#include <stdio.h>

int main(void)

{

const int n=10;

char s[n];

scanf(“%s”,s); /* ввод до ближайшего пробела, символ & опускать! т.к. имя строки это указатель на её начало*/

printf(“%S”,s);

return 0;

}

2) Ввести предложение:

scanf(“%10c”,s); // ввод строки с пробелами 10 это кол-во вводимых символов

printf(“%15s”,s); // выводит строку в 15 позиций, выравнивание по правому краю

3) Специальные средства ввода – вывода строк – gets и puts

const int n =10;

char s[n];

gets(s); // это лучший способ ввода строки в С

puts(s); // это лучший способ вывода строки в С

gets(s) – возвращает указатель на строку s. При ошибке возвращает NULL

puts(s) – в случае нормального нормального выполнения возвращает отрицательное число, в случае ошибки – EOF

Итог: printf удобно использовать при выводе данных различных типов. Если выводить только строки, то puts.

(Для ввода-вывода одного символа используют спец. функции:

GETCHAR()

PUTCHAR() )