加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

有关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).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读