有关C(与LCD连接)的itoa()和char数组问题
发布时间:2020-12-16 07:14:40 所属栏目:百科 来源:网络整理
导读:尽力做到简短;我正在尝试编程LCD以打印出一个整数变量(超过1位).我正在尝试使用itoa函数执行此操作,因为LCD采用ASCII字符.下面的代码在我想要的时候编译并打
尽力做到简短;我正在尝试编程LCD以打印出一个整数变量(超过1位).我正在尝试使用itoa函数执行此操作,因为LCD采用ASCII字符.下面的代码在我想要的时候编译并打印“Set Temp:”,问题是它不会像我想要的那样打印出存储在numberString数组中的字符(数字). writeString函数工作正常,但我无法弄清楚为什么它不会在“Set Temp:”之后打印int setTemp的值.所有输出的是:“设置温度:”光标刚挂.
可能值得一提的是光标悬挂在LCD上应该打印值的位置,表明它不仅仅是打印空值,而是根本不打印任何东西或等待某些东西. 对任何不正确的问题格式表示抱歉,我是新的. void writeChar(unsigned char ch) { lcd = ch; RS = 1; RW =0; E = 1; lcdDelay(); E=0; } void writeString(char *stringToLcd) { while(*stringToLcd > 0) { writeChar(*stringToLcd++); } } int changeTriggTemp(void) { char numberString[4]; //buffer,-99 -> 99 int setTemp = 50; clearDisplay(); writeString("Set Temp: "); itoa(setTemp,numberString,10); lcdDelay(); writeString(numberString); while(1); //placeholder before I return the int I want } 解决方法
如果没有定义函数原型,编译器可能会对它做出错误的假设,并错误地编写它的使用.引起你的注意,我问了定义是什么,因为通常的定义(至少在MSVC中)是
char *itoa(int value,char *str,int radix); 这同意你自己对该功能的使用, itoa(setTemp,10); 但是,仔细检查您的库头文件后,您声明它定义了 itoa(char * buf,int val,int base); 换句话说,前两个参数被切换.由于itoa()不是标准函数,因此允许这样做,但您必须相应地调用它: itoa(numberString,setTemp,10); (感谢@Eric,他们的建议显示它可能是错误的itoa). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |