【发布时间】:2020-05-11 02:38:25
【问题描述】:
所以我正在制作一个获得 10 个名字的函数。我尝试使用 strcspn() 从字符串末尾删除 \n 。但是我收到了这个警告。
#define NUM_OF_NAMES 10
#define STR_LEN 50
void input (char arr[][STR_LEN]);
int main()
{
char str [NUM_OF_NAMES][STR_LEN] = {0};
input(str);
return 0;
}
void input (char arr[][STR_LEN])
{
int i = 0;
printf("Enter 10 names:\n");
for (i = 0; i < NUM_OF_NAMES; i++)
{
fgets(arr[i], STR_LEN, stdin);
arr[i][strcspn(arr, "\n")] = 0;
}
for (i = 0; i < NUM_OF_NAMES; i++)
{
puts(arr[i]);
}
}
【问题讨论】:
-
第一个参数应该是
char *而不是指针数组(或char []而不是char [][]以匹配您的声明)。 -
提示:更好的代码会在使用
arr[i]之前测试fgets()的结果。
标签: c multidimensional-array newline c-strings