用于复制引用char数组中的数据的函数

时间:2015-05-26 02:37:13

标签: c++ function pass-by-reference

我怎样才能在C ++中编写一个将数据放入char数组的函数,我不知道如何解释,但我会写一个例子

void functionCopyData(char& buf){
   // get data from a char variable
   char data1 = "textdata1";
   char data2 = "textdata2"

   // copy data
   copy(&buf,data1);
   copy(&buf,data2);
}

char variable[20];

functionCopyData(&variable);    
printf(variable);
// return: textdata1textdata2

总结一下,我需要从两个变量中复制数据并放入一个char数组。对不起,如果我不够清楚。

为什么这样?

因为我需要从变量中获取数据并在函数请求中发送参考数据sendFunction(&data,sizeVar);

我该怎么做?

4 个答案:

答案 0 :(得分:0)

一个简单的解决方案是编写一个函数来复制一个数组,然后使用指向结果数组中不同位置的不同指针调用它两次。

例如,如果您有char data[20]来保存结果,并希望复制两个数组char a[10]char b[10],那么请编写一个函数

void copy(char* destination, char* source, int length)

length个字节从源复制到目标,然后用

调用它
copy(data, a, 10);
copy(data+10, b, 10);

答案 1 :(得分:0)

函数strcpystrlen可以帮助您:

if(isset($_REQUEST['activities'])) {
//do your query here..
}

答案 2 :(得分:0)

 void functionCopyData(char* buf){
   // get data from a char variable
   char* data1 = "textdata1";
   char* data2 = "textdata2"

   // copy data
   copy(buf,data1);
   copy(buf,data2);
}

char variable[20];

functionCopyData(variable);    
printf(variable);

我认为使用指针更明确但不是参考。

答案 3 :(得分:0)

  

如何在C ++中编写将数据放入char数组的函数

  1. 更改参数类型。

    void functionCopyData(char& buf){
    
    如果您只想更新一个字符而不是一个字符数组,那么

    会很好。要更新字符数组,请使用:

    void functionCopyData(char buf[]){
    

    void functionCopyData(char* buf){
    

    如果buf没有足够的内存来存储数据,那很容易导致问题。要使函数更健壮,请传递一个表示buf

    容量的数字
    void functionCopyData(char buf[], size_t capacity){
    
  2. 修正data1data2

    的定义
    char data1 = "textdata1";
    char data2 = "textdata2"
    

    在语法上没有效力。将它们更改为:

    char data1[] = "textdata1";
    char data2[] = "textdata2";
    

    char const* data1 = "textdata1";
    char const* data2 = "textdata2";
    
  3. 确保buf可以容纳data1data2

    // You need the additional 1 for the terminating null
    // character.
    size_t capacityNeeded = strlen(data1) + strlen(data2) + 1;
    if ( capacityNeeded > capacity )
    {
       // Deal with the problem.
    }
    else
    {
        // Now copy the contents of data1 and data2 to buf
    }
    
  4. 使用标准库函数将内容data1data2复制到buf

    strcpy(buf, data1);
    strcat(buf, data2);
    
  5. 修复对该功能的调用。

    functionCopyData(&variable);
    
    在给定函数声明的情况下,

    不是用于调用函数的正确语法。使用:

    functionCopyData(variable, 20);