Я использовал strncat
несколько раз, но сейчас проверю его формальное определение в стандарте:
#include <string.h>
char *strncat(char * restrict s1,
const char * restrict s2,
size_t n);
Функция strncat добавляет не более n символов (нулевой символ и последующие символы не добавляются) из массива, на который указывает s2, до конца строки, на которую указывает s1. Начальный символ s2 перезаписывает нулевой символ в конце s1. Конечный нулевой символ всегда добавляется к результату.
Обычно я думал бы о s1
и s2
просто как указатели на char. Но, как видно, стандарт называет их по-разному:
- строка, на которую указывает
s1
- массив, на который указывает
s2
Единственное различие между s1
и s2
является спецификатором const - это то, почему он называется массивом , а другой называется строкой?
Кроме того, в сноске:
Таким образом, максимальное количество символов, которое может быть в массиве, на которое указывает s1, равно strlen (s1) + n + 1.
Поэтому здесь они относятся к s1
по-другому: массив (а не строка), на который указывает s1
Есть ли какие-либо импликации этих разных способов вызова s1
и s2
?