如何将 char* 转换为 char 数组
How to convert a char* to a char array
我正在通过 char 中的一系列变量名称和值接收一些数据。变量名存储在 char* 指向的数组中。我正在尝试将收到的 char 数组数据与其他几个 char 数组进行比较,以便确定我收到了哪个变量的数据。
如何将 char* 转换为 char 数组,以便将其与其他数组进行比较,例如使用 strcmp 函数?
基本上,串行数据被送入一个数组并由这个函数处理:
void process(char *message) {
char *name = strsep(&message, " "); // split at the space
if (!message) {
Serial.println("Error: no value given");
return;
}
char *endp; // end of the numeric value
long value = strtol(message, &endp, 0);
if (endp == message) {
Serial.println("Error: could not parse value");
return;
}
// Successfully parsed.
char namestr[] = name;
if (strcmp(&namestr, &var1str) == 0) {
Serial.print(name);
Serial.print(" received value ");
Serial.println(value);
}
}
但是,当我尝试 char namestr[] = name;
时,出现以下错误:initializer fails to determine size of 'namestr'
正如@stark 在评论中提到的,您只需将 name
传递给 strcmp() 函数即可。 char 数组在内部只是一个 char 指针 char *
我正在通过 char 中的一系列变量名称和值接收一些数据。变量名存储在 char* 指向的数组中。我正在尝试将收到的 char 数组数据与其他几个 char 数组进行比较,以便确定我收到了哪个变量的数据。
如何将 char* 转换为 char 数组,以便将其与其他数组进行比较,例如使用 strcmp 函数?
基本上,串行数据被送入一个数组并由这个函数处理:
void process(char *message) {
char *name = strsep(&message, " "); // split at the space
if (!message) {
Serial.println("Error: no value given");
return;
}
char *endp; // end of the numeric value
long value = strtol(message, &endp, 0);
if (endp == message) {
Serial.println("Error: could not parse value");
return;
}
// Successfully parsed.
char namestr[] = name;
if (strcmp(&namestr, &var1str) == 0) {
Serial.print(name);
Serial.print(" received value ");
Serial.println(value);
}
}
但是,当我尝试 char namestr[] = name;
时,出现以下错误:initializer fails to determine size of 'namestr'
正如@stark 在评论中提到的,您只需将 name
传递给 strcmp() 函数即可。 char 数组在内部只是一个 char 指针 char *