Хотелось бы разобраться в функции snprintf(). Есть код: #define MAXLINE 4096 char buff[MAXLINE+1]; ssize_t n=read(readfd, buff, MAXLINE); snprintf(buff+n, sizeof(buff)-n, ": can't open, %s\n", strerror(errno)); 1. Как выглядит прототип функции snprintf()? 2. В чем разница назначение первого аргумента snprintf() и sprintf()? 3. Теперь самое главное: зачем мы в первом аргументе прибавляем buff+n?? 4. Ну и зачем вычитаем sizeof(buff)-n? Почему размер приемного буфера должен быть именно таким?