#include
void strncat(char [],char [],int);
void main(void)
{
char a[50]="The adopted symbol is ",b[27]="abcdefghijklmnopqrstuvwxyz";
strncat(a, b, 4);
printf("%s\n",a);
}
void strncat(char s[],char t[], int n)
{
int i = 0, j;
while(s[i++]) ;
for(j = 0; j < n && t[j];)
s[i++] = t[j++];
s = '\0';
}
函数strncat(s,t,n)本来应该将字符数组t的前n个字符连接到字符数组s中字符串的尾部。但函数strncat在定义时代码有误,不能实现上述功能。按下面的要求进行操作,回答问题并排除错误。
(1)单步执行。进入函数strncat后观察表达式s、t和i。当光条落在for语句所在行时,i为何值?当光条落在strncat函数块结束标记(右花括号 })所在行时, s、t分别为何值?
(2)分析函数出错的原因,排除错误,使函数正确实现功能,最后写出程序的输出结果。
|