如何在 Arduino 上使用 char 数组实现一个函数

How to implement a function with char array on Arduino

我正在做一个使用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);

我打赌。