Хелпикс

Главная

Контакты

Случайная статья





Char *S3;. S3=new char[m]; 



Char *S3;

S3=new char[m]; 

Примечание. Динамические строки, как и другик массивы, нельзя инициализировать.

Например, оператор,

Char *S4="На нуль делить нельзя";

Создает не строковую переменную, а указатель на строковую константу, изменить которую невозможно. S4 – адрес первого символа строковой константы.

 

1.3 Ввод-вывод строк

Рассмотрим ввод-вывод строк с помощью функций, унаследованных из бибдиотеки Си: gets и puts, scanf и printf.

Функции gets и puts используются, если работа производится только со строками. Функции scanf и printf удобнее использовать в том случае, если в одном операторе требется ввести или вывести данные разных типов.

Функция gets предназначена для ввода строки. Имеет один параметр, задающий адрес области памяти, в которую помещаются символы вводимой строки. В языке Си имя переменной, имеющей строковый тип, является этим адресом. Обращение имеет вид: gets(name), где name – переменная строкового типа - имя вводимой строки. Выполняя эту функцию, программа приостанавливает свою работу и ждет от пользователя ввода последовательности символов и/или нажатия клавиши Enter. Символ новой строки в строку не включается, вместо него в строку заносится нуль-символ. Функция возвращает указатель на строку s, а в случае возникновения ошибки или конца файла – NULL.

Функцияputs предназначена для вывода строки на стандартное устройство вывода. Имеет один параметр, задающий адрес области памяти, из которой на экран выводятся символы. Как уже отмечалось, имя переменной, имеющей строковый тип, является этим адресом. Обращение имеет вид: puts(name), гдеname – переменная-строка - имя выводимой строки или строка символов, заключенная в кавычки. После вывода строки курсор перемещается к началу новой строки экрана, т.е. завершающий нуль-символ строки заменяется на символ новой строки. Возвращает неотричательное значение при успехе или EOF при ошибке.

Функция printf предназначена для вывода форматированной последовательности данных

Функция scanf предназначена для ввода данных в заданном формате. Обращение имеет вид:

scanf(nf,&a1,&a2,...)

Здесь nf - форматная строка; &a1,&a2,... - список ввода - указатели на значения вводимых переменных a1, a2, .....

Подробно эти функции рассматривались в разделе "Консольный ввод-вывод".

 

1.4 Операции над строками

1.5 Реализация операции присваивания

Поскольку строка является массивом, а не специальным типом данных, то для строк не определена операция присваивания. Присваивание можно выполнить посимвольно, т.е. "вручную", или с помощью стандартных функций strcpy и strncpy.

Рассмотрим первый способ. Пример: s[0]='В'; s[1]='в'; s[2]='о'; s[3]='д';

Рассмотрим второй способ. Для использования функций strcpy и strncpy к программе следует подключить заголовочный файл <string.h> предложением #include <string.h>

Обращение к функции strcpy имеет вид: strcpy(s1,s2); Функция копирует все символы строки s2, включая завершающий нуль-смвол, в строку s1  и возвращает s1. Пример 1.

/* Копирование строки s2 в строку s1 c помощью strcpy */

#include<stdio.h>

#include<string.h>

#include<conio.h>

void main()

{

int n;                        // Длина строки

char s2[20]="Скоро сессия!"; //Исходная строка

n=strlen(s2)+1;            //Длина s1

char *s1=new char[n];        //Строка - копия s1

// char s1[20];

strcpy(s1,s2);            //Копирование s2 в s1

puts(s2);                // Вывод s2

puts(s1);                //Вывод s1

puts(strcpy(s1,s2));         //strcpy возвращает s1

getch();

}

Результат выполнения программы – три строки:



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.