ВУЗ:
Составители:
Рубрика:
37
При инициализации создается строка buffer и в нее помещаются
символы (здесь 10 пробелов). Инициализация char *string=buffer уста-
навливает указатель string на начало этой строки.
Операция же присваивания в последней строке не копирует при-
веденную строку “проба\n” в массив buffer, а изменяет значение ука-
зателя string так, что он начинает указывать на строку “проба\n”:
buffer
\0
string
п р о б а \n \0
Чтобы скопировать строку “проба\n” в buffer, можно поступить
так:
char buffer[ ] = “ ”;
char p =“проба\n”;
int i =0;
while ( ( buffer[i] = p[i] ) != ’\0’ ) i++;
Или так:
char buffer[ ] = “ ”
char p = “проба\n”;
char buf = buffer;
while (buf ++ = p ++ );
Здесь сначала p копируется в buf, т.е. символ ‘п’ копируется
по адресу buf, который совпадает с адресом buffer, т.е. buffer[0] стано-
вится равен ‘п’. Затем происходит увеличение указателей p и buf, что
приводит к продвижению по строкам “проба\n” и buffer соответствен-
но. Последний скопированный символ будет ’\0’, его значение – 0 и
оператор while прекратит цикл.
Еще проще воспользоваться библиотечной функцией, прототип
которой находится в файле string.h:
strcpy( buffer, “проба\n”);
При копировании необходимо обеспечить, чтобы размер памяти,
выделенной под buffer, был достаточен для хранения копируемой стро-
ки.
Страницы
- « первая
- ‹ предыдущая
- …
- 33
- 34
- 35
- 36
- 37
- …
- следующая ›
- последняя »