我正在使用ESP8266作为WiFi服务器做一个草图,我需要向客户端发送一个字符串,为此我正在使用以下代码:
char sbuf[] = "Hello world!\n\r";
size_t len = strlen(sbuf);
for (i = 0; i < MAXCLIENTS; i++) {
if (serverClients[i] && serverClients[i].connected()) {
serverClients[i].write((char*) &sbuf, len);
delay(1);
}
}
它可以正常工作,客户端可以接收字符。
但是现在我想让一个函数在需要的时候调用它,这是函数代码:
void sendDataToClient( char *sbuf[]) {
size_t len = strlen(sbuf);
for (i = 0; i < MAXCLIENTS; i++) {
if (serverClients[i] && serverClients[i].connected()) {
serverClients[i].write((char*) &sbuf, len);
delay(1);
}
}
}
那就是我在调用函数:
char bufferMSGtoClient[] = "Hello world!\n\r";
sendDataToClient(bufferMSGtoClient)
但这不起作用,客户什么也没收到,有人可以告诉我我的错误是什么?
最佳答案
sizeof并没有您认为的那样。您得到4,因为那是指针的大小。请改用strlen。它将告诉您\ n的时间。如果您也想要\ r,请添加两个。
void sendDataToClient( char *sbuf[]) {
这条线也没有按照您的想法做。它正在传递一个指针数组。您要么想要一个指针,要么想要一个数组,但是当然不需要指针数组。
void sendDataToClient( char *sbuf) {
和
serverClients[i].write((char*) &sbuf, len);
应该
serverClients[i].write(sbuf, len);
我打赌
关于c++ - 如何在Arduino上使用char数组实现函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61830994/