strncat(bug, add, available);
中的int available
int i = 0
; //记得规定一下数组元素i
从多少开始 s_gets()函数中
#include<stdio.h>
#include<string.h>
#define N 30
#define M 13
char *s_gets(char *st, int n);
int main(void)
{
int available;
char flower[N];
char add[] = "is a sss ddd fff gg";
char bug[M];
puts("what is your favorite flower");
s_gets(flower, N); //写入数组的地址, 以及数组的大小
//+1是增加一个位置给‘\0’空字符:字符串结束标志
if ( (strlen(add) + strlen(flower) +1) <= N ) //统计添加数组中字符的数量,以及现在要被拼接数组的大小 <= 拼接数组所能容纳的数量
{
strcat(flower, add);
}
puts(flower);
puts("what is your favorite bug");
s_gets(bug, M);
available = M - strlen(bug) - 1; //计算当先bug数组还有多少余量空间,额外减去'\0'(空字符也会占用一个位置空间)
strncat(bug, add, available); //*add可以向bug数组添加多少字符*
puts(bug);
return 0;
}
char *s_gets(char *st, int n)
{
char *ret_val;
int i = 0; //记得规定一下i从多少开始
ret_val = fgets(st, n ,stdin);
if (ret_val != NULL)
{
while (st[i] != '\n' && st[0] != '\0' )
{
i++;
}
if (st[i] == '\n')
{
st[i] = '\0';
}
else
{
while (getchar() != '\n')
{
continue;
}
}
}
return ret_val;
}