所以我有一个练习,我必须按如下方式连接2个char数组:
const int MAXI=100;
char group[MAXI+7]="things/"
char input[MAXI];
cin >> input;
//Doing something here!
cout << group << endl;
必须让它发生,所以它返回 - things / input_text -
棘手的部分是我不允许使用指针,字符串库或任何类型的动态数组。
怎么办?
编辑:我不需要打印它,我需要变量具有值:things / input_text,因为我将用于其他东西!EDIT2:我不能使用&lt;字符串&gt;库,这意味着,我不能在该库上使用strcat()或任何东西。我提供了另一个模块,触发如下:
void thing(group, stuff, more_stuff);
就是这样。
答案 0 :(得分:3)
这样的东西?
#include <iostream>
using namespace std;
const int MAXI=100;
int main()
{
char group[MAXI+7]="things/";
char input[MAXI];
cin >> input;
for(int i=0; i<MAXI; i++)
{
group[7+i]=input[i];
if(input[i]=='\0') break;//if the string is shorter than MAXI
}
cout << group << endl;
}
答案 1 :(得分:1)
#include <iostream>
using namespace std;
int main(int argc, char **argv)
{
const int MAXI=100;
char group[MAXI+7]="things/";
char input[MAXI];
// Warning: this could potentially overflow the buffer
// if the user types a string longer than MAXI - 1
// characters
cin >> input;
// Be careful - group only contains MAXI plus 7 characters
// and 7 of those are already taken. Which means we can only
// write up to MAXI-1 characters, including the NULL terminator.
for(int i = 0; (i < MAXI - 1) && (input[i] != 0); i++)
{
group[i + 7] = input[i];
group[i + 8] = 0; // ensure null termination, always
}
cout << group << endl;
return 0;
}