如何在 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);
我打赌。
我正在做一个使用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);
我打赌。