Указатели char*. Принцип работы - C (СИ)
Формулировка задачи:
Здравствуйте.
пример:
ведь s1 и s2 указывают на начало соответствующих строк
вопрос:
получается что копирование ориентируется только на '\0', а если по какой-то причине '\0' не встретится(сбой, например), то что? ведь char* - просто адрес, который можно положить в соответствующий по размеру целочисленный тип ?
char *s1="Any1", s2="Any2";
void string_copy(char *s1, char *s2)
{
while((*s1++= *s2++)!='\0')
;
}Решение задачи: «Указатели char*. Принцип работы»
textual
Листинг программы
void string_copy(char *s1, char *s2) {
while (*s1++ = *s2++);
}
int main() {
char s1[50] = "Any1";
char s2[] = "Any2";
string_copy(s1, s2);
}
Объяснение кода листинга программы
- В функции
string_copyпроисходит копирование строкиs2в строкуs1. - В функции
mainсоздаются две строкиs1иs2типаcharс помощью оператора[]. - Первая строка
s1инициализируется значениемAny1, а вторая строкаs2значениемAny2. - Затем вызывается функция
string_copy, которая копирует строкуAny2в строкуAny1. - Результатом работы программы является скопированная строка
Any2в строкуAny1.