C++读取串行输入到字符串
C++ read Serial input to String
我需要将串行输入从控制台获取到字符串。当用户在控制台中键入"xyz"并按回车键时,字符串"input"应定义为"xyz"。从那时起,我将解释字符串。这是我目前拥有的:
定义:
char input[] = {0};
char bufferChar[] = {0};
用:
bool canInput = true;
while(canInput == true) {
if(Serial.available() > 0) {
char bufferChar2 = Serial.read();
bufferChar[1] = bufferChar2;
strcpy(input[1], input[1]);
strcat(input[1], bufferChar[1]);
Serial.print(input);
tft.print(input);
}
}
我是 c 的新手,所以很抱歉,如果这段代码不好。谢谢你,莱纳斯
char bufferChar[] = {0};
这将声明一个包含一个元素的数组。
bufferChar[1] = bufferChar2;
这将尝试设置单元素数组中第二个元素的值。缓冲区溢出。未定义的行为。
strcpy(input[1], input[1]);
这是没有道理的。除了想要在自身之上strcpy
()某些东西背后的可疑原因之外,input
是一个char
数组,因此input[1]
是一个单一的char
值,而strcpy()
则需要char *
参数。
这一行一定让你的编译器发出一堆警告和/或错误。请不要忽略来自编译器的诊断消息。这是编译器告诉你你做错了。
strcat(input[1], bufferChar[1]);
因此,我们尝试strcat
()另一对char
而不是char *
s。这不会比尝试strcpy()
同样的事情更好。
即使你的编译器接受这一点,根据我的计数,生成的代码也会以至少三到四种不同的方式崩溃。
您需要:
声明
input
并charBuffer
足够大小的数组,以便您打算对它们执行的操作。将指针(而不是
char
s)传递到strcpy()
(如果需要)和strcat()
。char *
strcpy()
和strcat()
数组的参数必须是以 null 结尾的字符串。您有责任终止每个参数"\0"。尽管有几种方法可以"免费"获得此内容,但如果您有疑问,请明确 0 终止它们。
相关文章:
- 如何使用堆栈将字符串输入拉伸 k 次
- 不确定出了什么问题(字符串输入)
- 如何获取字符串输入n次?
- 使用重定向命令从 stdin 读入的字符串"<"输入文件未正确附加
- isPalindrome不显示输出,isPalindrome函数未使用字符串输入作为字符串参数进行测试
- C++ 对象数组字符串输入在控制台上不起作用
- 为什么 cin 在包含字符串标头后接受字符串输入
- 拆分字符串输入并查找字符是否有效
- 有没有办法将最初作为字符串输入的数字字符数组复制到双向链表中
- 将字符串输入到多维数组中
- 字符串输入后的空格
- 字符串流中的自定义字符串输入
- C 未验证字符串输入
- 总结数字字符串输入的最佳方法
- 如何验证用户将字符串输入到std :: cin中
- 在C++测试家庭作业问题中的字符串输入时无法退出循环(作为数据验证)
- 如何在C++中检测字符串输入中的换行符
- C++将字符串输入拆分为两个整数
- 如何检查字符串输入是否为有效的双精度
- 在读取数据文件时,如何找到用户字符串输入的字谜?