在引用字符数组中复制数据的函数
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);
#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
更改参数类型。
void functionCopyData(char& buf){
如果您只想更新一个字符而不是一组字符,那会很好。要更新字符数组,请使用:
void functionCopyData(char buf[]){
或
void functionCopyData(char* buf){
如果 buf
没有足够的内存来存储数据,这很容易导致问题。为了使函数更健壮,传递一个数字来表示 buf
.
的容量
void functionCopyData(char buf[], size_t capacity){
修复 data1
和 data2
的定义。
char data1 = "textdata1";
char data2 = "textdata2"
在句法上无效。将它们更改为:
char data1[] = "textdata1";
char data2[] = "textdata2";
或
char const* data1 = "textdata1";
char const* data2 = "textdata2";
确保 buf
可以容纳 data1
和 data2
。
// 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
}
使用标准库函数将内容 data1
和 data2
复制到 buf
。
strcpy(buf, data1);
strcat(buf, data2);
修复对函数的调用。
functionCopyData(&variable);
鉴于函数声明, 不是用于调用函数的正确语法。使用:
functionCopyData(variable, 20);
如何用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);
#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
更改参数类型。
void functionCopyData(char& buf){
如果您只想更新一个字符而不是一组字符,那会很好。要更新字符数组,请使用:
void functionCopyData(char buf[]){
或
void functionCopyData(char* buf){
如果
的容量buf
没有足够的内存来存储数据,这很容易导致问题。为了使函数更健壮,传递一个数字来表示buf
.void functionCopyData(char buf[], size_t capacity){
修复
data1
和data2
的定义。char data1 = "textdata1"; char data2 = "textdata2"
在句法上无效。将它们更改为:
char data1[] = "textdata1"; char data2[] = "textdata2";
或
char const* data1 = "textdata1"; char const* data2 = "textdata2";
确保
buf
可以容纳data1
和data2
。// 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 }
使用标准库函数将内容
data1
和data2
复制到buf
。strcpy(buf, data1); strcat(buf, data2);
修复对函数的调用。
鉴于函数声明,functionCopyData(&variable);
不是用于调用函数的正确语法。使用:
functionCopyData(variable, 20);