f=fopen("/dev/ttyUSB0","r")
char c;
c=getc(f);
while(c!=EOF) {
c=getc(f);
}
在上面的代码中,当我拔下设备时,循环永远不会破坏beaglebone ubuntu,即arm架构。上面的代码适用于我的i386 ubuntu桌面。
- 编辑 -
非常奇怪!迈克的int c
;没用。在c
上观看c=255
,但即使我将c!=EOF
更改为c!=255
循环也不会中断!!试了一个小时后我很沮丧!!!
- 编辑 -
我试过了fstream fin("/dev/ttyUSB0", fstream::in);
。当我拔下输入串口设备fin>>c
时,永远不会返回,CPU使用率为100%!!我期待它的错误!
答案 0 :(得分:4)
将c
的类型从char
更改为int
。 EOF
超出了char
的范围。
澄清一下,通过“改变类型”,我的意思是将声明改为
int c;
在将int
缩减为char
之后,不会将该值转回{{1}}。
答案 1 :(得分:0)
在C ++中,使用cin更容易。
int main()
{
char ch;
while (true)
{
cin >> ch;
if (!cin.good())
break;
// Do something with you character
}
}
当con>>这将停止ch失败了。