这个密码好吗?
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 ] = '\0';
strcpy(reqData,serverData); // * my concern !
}
基本上,使用:
//some global var
char *incomingData={0};
//then
function(incomingData);
它给我带来了无法解释的问题(硬件上奇怪的崩溃)
最佳答案
好吧,这里
strcpy(reqData,serverData); // * my concern !
reqData
指向incomingData
指向的位置:char *incomingData={0};
但您没有正确初始化
incomingData
,它没有指向可以写入内容的内存指针的初始化对我来说也有点奇怪。你可以像下面这样初始化它-如果你事先知道大小的话。char incomingData[SIZE] = {0};
内部功能:
char serverData[130]={0};
serverData
的长度是130小心缓冲区溢出,如果在下一行接收到大于130的数据怎么办?