Вы передаете arr
в strcspn()
: тип указан неверно, поскольку arr
является указателем на массив массивов STR_LEN
символов. Вместо этого вы должны передать arr[i]
, что превращается в указатель на массив char
, который является ожидаемым типом для обоих аргументов strcspn()
.
Обратите внимание, что вы также должны проверить возвращаемое значение fgets()
для обнаружения неожиданного конца файла и предотвращения непредвиденного поведения.
#include <stdio.h>
#include <string.h>
#define NUM_OF_NAMES 10
#define STR_LEN 50
int input(char arr[][STR_LEN]);
int main() {
char str[NUM_OF_NAMES][STR_LEN] = { 0 };
input(str);
return 0;
}
int input(char arr[][STR_LEN]) {
int i, n;
printf("Enter 10 names:\n");
for (i = 0; i < NUM_OF_NAMES; i++) {
if (!fgets(arr[i], STR_LEN, stdin))
break;
arr[i][strcspn(arr[i], "\n")] = '\0';
}
n = i;
for (i = 0; i < n; i++) {
puts(arr[i]);
}
return n;
}