Хелпикс

Главная

Контакты

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





Пример 2.. gets(str);. Присваивание строк. Пример 3.. Пример 4.. str2=str1;



Пример 2.

#include <iostream.h>

int _tmain(intargc, _TCHAR* argv[])

{

SetConsoleCP(1251);

SetConsoleOutputCP(1251);

cout<<"Введитестроку"<<endl;

char*str; //объявляется через указатель

gets(str);

cout<<"Результат: "<<str<<endl;

system("pause");

return 0;

}

 

Присваивание строк

Не зная о правильных способах, начинающие программисты часто «выдумывают» свои способы присваивания строк, конечно, неправильные. Приведу несколько примеров:

Пример 3.

charstr1[10]="Привет", str2[10];

str2=str1;

Ошибка в том, что имя массива нельзя использовать в левой части оператора присваивания.

Эта ошибка относительно безопасна, так как приводит к сбою на этапе компиляции. Есть и гораздо более опасная ошибка:

 

Пример 4.

intmain()

{

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

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

str2=str1;

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

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

gets(str2);

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

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

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

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

return 0;

}

 

Этот код откомпилируется, но, возможно, содержит «идеологическую» ошибку. Неправильно полагать, что в str2 теперь содержится копия str1. На самом деле этот указатель указывает не на копию, а на ту же самую строку. При любом изменении содержимого str2 изменяется str1. Однако, если именно это и требуется, то все в порядке.

Следующий пример копирует содержание первой строки во вторую без изменения первой, используя цикл.



  

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