Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将一个字符数组连接到另一个字符数组的末尾(没有内置函数)_C++ - Fatal编程技术网

C++ 将一个字符数组连接到另一个字符数组的末尾(没有内置函数)

C++ 将一个字符数组连接到另一个字符数组的末尾(没有内置函数),c++,C++,我已经在这个问题上纠缠了几个小时了,我需要将一个字符串连接到另一个字符串的末尾,然后将结果存储在第三个字符串中(没有使用预先构建的函数。我很难将结果存储到另一个字符串中,我能够瞥见我想要的内容,但是它会导致无限循环,并且似乎没有效果。有人能解释一下吗 #include <iostream> using namespace std; void Concat(char arr1[], char arr2[], char arr3[]); int main(){ char

我已经在这个问题上纠缠了几个小时了,我需要将一个字符串连接到另一个字符串的末尾,然后将结果存储在第三个字符串中(没有使用预先构建的函数。我很难将结果存储到另一个字符串中,我能够瞥见我想要的内容,但是它会导致无限循环,并且似乎没有效果。有人能解释一下吗

#include <iostream>

using namespace std;

void Concat(char arr1[], char arr2[], char arr3[]);

int main(){

    char arr1[] = {"Hello how are you? \0 "};
    char arr2[] = { "The weather was cloudy today, so it rained. \0" };
    char arr3[] = { "Coffee is a great way to start the day. \0" };

    Concat(arr1, arr2, arr3);
}

void Concat(char arr1[], char arr2[], char arr3[]){

    while (arr1 != '\0' && arr2 != '\0') {

        // (This outputs what a want, haveing string 2 concat to the end of the firs string) 
        // However there is no way to save it to another array or stop the infinte loop.
        //cout << arr1 << arr2 << endl; 

        arr1 + arr2 = arr3; // syntax error

    }


} 
#包括
使用名称空间std;
void Concat(char arr1[],char arr2[],char arr3[]);
int main(){
char arr1[]={“你好吗?\0”};
char arr2[]={“今天天气多云,所以下雨了。\0”};
char arr3[]={“咖啡是开始一天的好方法。\0”};
Concat(arr1、arr2、arr3);
}
void Concat(字符arr1[],字符arr2[],字符arr3[]{
而(arr1!='\0'&&arr2!='\0'){
//(这将输出所需内容,在第一个字符串的末尾有字符串2 concat)
//但是,无法将其保存到另一个数组或停止infinte循环。

//无法快速解决您的问题:

void Concat(const char* input1, const char* input2, char* output)
{
    int i = 0;
    do {

        output[i] = *input1;
        i++;
        input1++;
    } while (*input1 != '\0');
    do {

        output[i] = *input2;
        i++;
        input2++;
    } while (*input2 != '\0');
}

注意:我不检查输出缓冲区是否有足够的内存和其他内容,我希望您可以自己编辑它。

您可以尝试以下内容:

#include <iostream>

void concat(const char *arr1, const char *arr2, char *arr3);

int main(){
    const char *arr1("abc");
    const char *arr2("def");
    char arr3[10];

    concat(arr1, arr2, arr3);
    std::cout << "arr3 is " << arr3 << std::endl;
}

void concat(const char *arr1, const char *arr2, char *arr3){

    if (arr1) {
        while(*arr1 != '\0') {
            *arr3 = *arr1;
            ++arr1; ++arr3;
        }
    }

    if (arr2) {
        while(*arr2 != '\0') {
            *arr3 = *arr2;
            ++arr2; ++arr3;
        }
    }

    *arr3 = '\0';
}
#包括
void concat(常量字符*arr1,常量字符*arr2,字符*arr3);
int main(){
常量字符*arr1(“abc”);
常量字符*arr2(“def”);
char-arr3[10];
concat(arr1、arr2、arr3);

std::cout您应该尝试按索引合并索引。在以下代码中,我首先将
arr1
的所有内容添加到
arr3
中,然后将
arr2
的内容合并到
arr3

#include <iostream>

using namespace std;

void Concat(char arr1[], char arr2[], char arr3[]);

int main(){

    char arr1[] = {"Hello how are you? \0 "};
    char arr2[] = { "The weather was cloudy today, so it rained. \0" };
    char arr3[] = { "Coffee is a great way to start the day. \0" };

    Concat(arr1, arr2, arr3);
    std::cout << "arr3 is " << arr3 << std::endl;
}

void Concat(char arr1[], char arr2[], char arr3[]){

   if (arr1) {
        while(*arr1 != '\0') {
            *arr3 = *arr1;
            ++arr1; ++arr3;
        }
    }

    if (arr2) {
        while(*arr2 != '\0') {
            *arr3 = *arr2;
            ++arr2; ++arr3;
        }
    }

    *arr3 = '\0';


} 
#包括
使用名称空间std;
void Concat(char arr1[],char arr2[],char arr3[]);
int main(){
char arr1[]={“你好吗?\0”};
char arr2[]={“今天天气多云,所以下雨了。\0”};
char arr3[]={“咖啡是开始一天的好方法。\0”};
Concat(arr1、arr2、arr3);

std::cout
arr1+arr2
不是左值,因此不能将值分配给它。我认为很明显,你需要阅读你的课堂讲稿。首先,你需要确保你完全理解任务。你想让结果是两个输入的串联(保留原始输入不变),还是希望将一个字符串连接到另一个字符串(即修改其中一个),然后将结果存储到第三个字符串中?无论如何,您最近可能听说过动态内存分配的概念。这确实帮助我理解了这一点,非常感谢