c++ - 如何在Arduino上使用char数组实现函数

标签 c++ arduino wifi esp8266

我正在使用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/

相关文章:

c++ - 如何使用带有分隔字符串而不是空格的符号的输入字符串流?

c# - 如何将 Arduino 程序移植到 .net 以便在 Netduino 上使用?

Java应用程序读取WiFi信号和SSID?

C++ 将 unsigned char 数组转换为 String 表示形式的 long(或 long long)

c++ - 结构数组的初始化

android - 如何在 Android 中禁用 WIFI 自动连接

android - 如何根据信号强度按升序对 getScanResults() 列表进行排序?

c++ - 无法从类型基类的指针访问派生类方法

c++ - "Destructor already defined"带有专门的析构函数

java - C++/Java : Toggle boolean statement?