Если функция объявлена следующим образом
void strncat(char *s);
, то это означает, что функция не знает размер массива, на который указывает указатель s
. Таким образом, кажется, что функция имеет дело со строкой: последовательность символов, оканчивающаяся нулевым символом.
С другой стороны, использование буквы 'n'
в имени функции strncat
означает, что функция должна иметь еще один параметр, который определяет длину используемого массива символов.
Таким образом, либо функция объявлена неправильно, либо ее следует переименовать, например,
void strcat(char *s);
Или лучше объявить ее как
char * strcat(char *s);
Следовательно, это объявление массива символов
char Feld[ ] = {1,2,3};
нельзя использовать в функции, поскольку массив не содержит строку и его длина не передается функции .
Вы должны объявить массив, например, как
char Feld[ ] = { '1','2','3', '\0' };
или как
char Feld[ ] = "123"; // or { "123" }
Указатели не сохраняют информацию, указывают ли они на один объект или первый элемент массива.
Так что, если функция объявлена, как показано выше, то вы должны просто написать
char *p = Feld;
strcat( p );
или без использования промежуточного указатель указывался как
strcat( Feld );
Внутри функции длина строки будет определяться количеством символов перед завершающим нулем '\0'
.