У нас есть функция которая принимает две строки и производит слияние
void strcat(char *to, const char *from)
{
while (*to) to++;
while (*to++ = *from++);
}
Почему здесь не требуется добавить нулевой символ в отличие например от такого кода
void strcat(char *to, const char *from)
{
while (*to != '\0') {
to++;
}
while (*from != '\0') {
*to = *from;
from++;
to++;
}
*to = '\0';
}
Ответ
Нулевой символ здесь добавляется автоматом.
Выражение
*to++ = *from++
выполняет присвоение, после чего возвращает новое значение *to. То есть, сначала ноль скопируется из *from в *to, а уж потом он будет проанализирован в while, который прекратится.
Комментариев нет:
Отправить комментарий