Хелпикс

Главная

Контакты

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





Пример 5.. while (str1[i]!='\0'). str2[i]=str1[i];. Длина строки



Пример 5.

char str1[8]="привет", str2[8];

cout<<"Строка 1: "<<str1<<endl;

int i=0;

while (str1[i]!='\0')

{

str2[i]=str1[i];

i++;

}

cout<<"Строка 2: "<<str2<<endl;

cout<<"Измените строку 2: ";

gets(str2);

cout<<"В результате изменится только вторая строка:"<<endl;

cout<<"Строка 1: "<<str1<<endl;

cout<<"Строка 2: "<<str2<<endl;

//cout<<"str[1]= "<<str[0]<<endl;

 

 

Для копирования строк существуют несколько библиотечных функций, наиболее общеупотребительной из которых является функция

 

char* strcpy(char* dest, const char* src)

 

Функция посимвольно копирует содержимое строки, на которую указывает src в строку, на которую указывает dest и возвращает dest. Так как массив может быть преобразован в указатель, такой вызов функции абсолютно легален.

 

 

Длина строки

Для вычисления длины строки используется функция

 

size_tstrlen(const char *string);

 

Функция возвращает длину строки, не включая нуль-терминатор. Как всегда, следите за тем, чтобы в выделенной под string памяти все же нашелся такой символ. В противном случае функция выйдет за пределы выделенной памяти и все будет плохо. Напомню, что для определения длины строки функции придется последовательно обратиться ко всем ее символам до нуль-терминатора, а значит, потенциально эта операция довольно дорогая. Поэтому, не следует использовать эту функцию в циклах, то есть вместо:

 

for (i=0;i<strlen(str);i++) {

// работа со строкой, не изменяющая ее длину}

больше подойдет примерно такой код:

charlen;

len=strlen(str);

for (i=0;i<len;i++) {

// работа со строкой, не изменяющая ее длину

 



  

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