请指出下边代码中存在的问题?(答案有点不明白,能通俗易懂的解答下吗?)
#include <stdio.h>
#include <string.h>
int main()
{
char str[10];
strncat(str, "I love FishC.com!", sizeof(str));
return 0;
}
答案:不当使用 C 标准库中的 strncat 函数常常会导致差一错误(差一错误是指在计数时由于边界条件判断失误导致结果多了一或少了一的错误)和安全问题。
程序员经常认为 strncat 函数在写入字符串结束符时不会超过最大长度。事实上 strncat 函数会在指定的最大长度之后一字节的位置写入字符串结束符。
上边代码应该改为:strncat(str, "I love FishC.com!", sizeof(str)-1);