|
|||
Пример 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++) { // работа со строкой, не изменяющая ее длину }
|
|||
|