我一直在摆弄一些小型LCD项目的C编程。
我有一个字符串,该字符串在BASH
(脚本)中执行,将值从0-100(音量级别)返回字符串是这样的:
!/bin/bash
amixer获取'diyinhk时钟选择器',0 |awk'/[/{getline;打印$ 5}'|tr -d'[]%'
我需要返回此值,以便可以在if/else语句中使用它,例如我认为该值以ASCII的方式返回?
printf输出正确,例如。当amixer
是98时,屏幕上的printf为98但是在LCD上,有一种98之后的_ ....像这样:98_
它是某种"返回"值?
我需要的是一个干净的数字,我可以用作EG。:
if(get_volume< = 30)
语句;
else if(get_volume< = 50)
语句;
否则... ..........
这是一个片段:
文件 *fpipe;
char *command =(char *)"/home/pi/lcd/get_volume.sh";//get_volume脚本
char Line [256];
if (! (fpipe = (FILE*)popen(command,"r")) ) { perror("PROBLEMS"); exit(1); } while ( fgets( line, sizeof line, fpipe))
lcdposition(lcd,0,0);
lcdprintf(lcd,line);//在LCD上打印输出
printf(" nline =%s n",line);//在屏幕上打印输出
atoi
函数将代表一个数字的字符串转换为int。因此,要获得"干净的数字",您需要类似的东西:
int volume = atoi(line);