在引用字符数组中复制数据的函数

Function to copy data in a reference char array

如何用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);

我该怎么做?

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

比如你有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);

功能strcpy and strlen可以帮助您:

#include <string.h>

void functionCopyData(char buf[]){
  char data1[] = "textdata1";
  char data2[] = "textdata2";

  strcpy(buf, data1);
  strcpy(buf+strlen(buf), data2);
}

...
functionCopyData(variable);
...
 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);

我认为使用指针而不是引用更清楚。

How can I write in C++ a function who put the data in a char array

  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);