字符串复制基础
String copy- basics
这段代码好吗?
void function (char* reqData) {
char serverData[130]={0};
uint8_t buffer[128] = {0};
uint32_t len = wifi.recv(&mux_id, buffer, sizeof(buffer), 100);
//fill the serverData in some for loop
for(uint32_t i = 0; i < len; i++)
serverData[i]=(char)buffer[i];
serverData[len ] = '[=10=]';
strcpy(reqData,serverData); // * my concern !
}
并且在主要的情况下,使用 with :
//some global var
char *incomingData={0};
//then
function(incomingData);
它给我带来了无法解释的问题(硬件上的奇怪崩溃)
好的
strcpy(reqData,serverData); // * my concern !
reqData
指向 incomingData
指向的位置:
char *incomingData={0};
但是你没有正确初始化incomingData
,它没有指向你可以写东西的内存。另外 ={0} 指针的初始化对我来说似乎有点奇怪。你可以像下面这样初始化它 - 如果你提前知道大小。
char incomingData[SIZE] = {0};
还有内部函数:
char serverData[130]={0};
serverData
长度为 130 小心缓冲区溢出,如果在接下来的行中收到大于 130 的数据怎么办?
这段代码好吗?
void function (char* reqData) {
char serverData[130]={0};
uint8_t buffer[128] = {0};
uint32_t len = wifi.recv(&mux_id, buffer, sizeof(buffer), 100);
//fill the serverData in some for loop
for(uint32_t i = 0; i < len; i++)
serverData[i]=(char)buffer[i];
serverData[len ] = '[=10=]';
strcpy(reqData,serverData); // * my concern !
}
并且在主要的情况下,使用 with :
//some global var
char *incomingData={0};
//then
function(incomingData);
它给我带来了无法解释的问题(硬件上的奇怪崩溃)
好的
strcpy(reqData,serverData); // * my concern !
reqData
指向 incomingData
指向的位置:
char *incomingData={0};
但是你没有正确初始化incomingData
,它没有指向你可以写东西的内存。另外 ={0} 指针的初始化对我来说似乎有点奇怪。你可以像下面这样初始化它 - 如果你提前知道大小。
char incomingData[SIZE] = {0};
还有内部函数:
char serverData[130]={0};
serverData
长度为 130 小心缓冲区溢出,如果在接下来的行中收到大于 130 的数据怎么办?