C 检查字符串的最后一个字符是否与 X 相等

标签 c string arduino

我正在为我的arduino写一个草图,我想检查我的字符串的最后一个字符。

例如:

如果输入是 cats- 我想看看最后一个字符(在我的例子中是“-”)实际上是否 -

我使用的代码:

串行事件函数

void serialEvent() {
 while (Serial.available()) {
  // get the new byte:
  char inChar = (char)Serial.read(); 
  // add it to the inputString:
  inputString += inChar;
  // if the incoming character is a newline, set a flag
  // so the main loop can do something about it:
  if (inChar == '.') {
    stringComplete = true;
  } 
 }
}

这是通过检查输入是否与 - 相等来检查输入字符串是否完整。然而,这仅适用于控制台,因为我使用的 python 脚本将所有内容一起发送

void loop() {
 if (stringComplete) {
 Serial.println(inputString);
 display.clearDisplay();
 display.setTextSize(1);
 display.setCursor(0,0);
 display.println("Altitude:");
 display.println(inputString);
 display.display();
 // clear the string:
 inputString = "";
 stringComplete = false;
}

知道如何检查吗?

最佳答案

在 C++ 中,std::string 的最后一个字符是 s.back() (如果字符串为空,则先检查 UB。)我知道您的问题被标记为 ,但代码本身使用 std::string 所以我认为它实际上是 C++。

C+中正式添加了back()成员函数,类似于std::vector等有序容器中的同名成员函数+11,所以它可能存在也可能不存在。如果不是,您可以使用:

*(s.end()-1)

或者:

s[s.size()-1]

如果 s 确实是一个 C 字符串(即 char *),则必须使用:

s[strlen(s)-1]

但是strlen需要读取整个字符串,所以效率不高。

以上都与s.back()有同样的问题:如果字符串为空,则结果是Undefined Behaviour,所以需要先检查。

关于C 检查字符串的最后一个字符是否与 X 相等,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28788572/

相关文章:

python - 打开 COM 端口以在客户端进行串行通信的解决方法(最好在 Python 中)

c++ - sscanf 错误 : cannot convert 'String' to 'const char*'

c - 将局部静态数组传递给函数

c - 在 Perl 程序中嵌入模块

c++ - memcpy 和按赋值复制的区别

java - 如何获取字符串中的数字,然后计算它们的平均值?

c - 如何在 C 中返回 ReadLine() 函数?

c - 我想知道 OCIStmt 结构

python - 使用 python 的字符串格式化库的问题

c++ - 使用Arduino的不同大小的多维数组