Удалите &
из &name
, и оно должно работать. Объявление вашей функции вводит в заблуждение; это на самом деле эквивалентно:
void include(int id, char *name)
Компилятор делает вид, что массив
параметр был объявлен как указатель
Если name
будет массивом, name == &name
. Но name
это указатель, поэтому name != &name
.
В FAQ C есть несколько вопросов, которые могут помочь: