所以我的任务是:
使用
strncpy
和中的strncat
函数#include<cstring>
,实现一个函数void concat(const char a[ ], const char b[ ], char result[ ], int result_maxlength)
将字符串
a
和b
缓冲区连接起来result
。确保不要超出结果。它可以容纳result_maxlength
字符,不包括\0
终止符。(也就是说,缓冲区有buffer_maxlength + 1
可用的字节。)一定要提供一个 '\0' 终止符。
我的解决方案(到目前为止)如下,但我不知道我做错了什么。当我实际运行程序时,我不仅会收到运行时检查失败 2 错误,而且我不确定应该在哪里添加\0
终止符,或者即使我应该使用strncat
而不是strncpy
. 希望有人能引导我朝着正确的方向前进。是的,这就是硬件。这就是为什么我说只要引导我朝着正确的方向前进,这样我就可以尝试弄清楚:p
#include <iostream>
#include <cstring>
using namespace std;
void concat(const char a[ ], const char b[ ], char result[ ], int result_maxlength);
int main()
{
char a[] = "Woozle";
char b[] = "Heffalump";
char c[5];
char d[10];
char e[20];
concat(a, b, c, 5);
concat(a, b, d, 10);
concat(a, b, e, 20);
cout << c << "\n";
cout << d << "\n";
cout << e << "\n";
return 0;
}
void concat(const char a[ ], const char b[ ], char result[ ], int result_maxlength)
{
strncat(result, a, result_maxlength);
strncat(result, b, result_maxlength);
}