だから私の割り当ては:
strncpy
のandstrncat
関数を使用して、関数を#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);
}