gpt4 book ai didi

c - 关于 C 的 itoa() 和 char 数组问题(连接 LCD)

转载 作者:太空狗 更新时间:2023-10-29 15:40:20 27 4
gpt4 key购买 nike

尽量简短;我正在尝试对 LCD 进行编程以打印出一个整数变量(超过 1 位)。我正在尝试使用 itoa 函数来执行此操作,因为 LCD 采用 ASCII 字符。下面的代码编译并打印“设置温度:”当我想要它时,问题是它没有像我想要的那样打印出存储在 numberString 数组中的字符(数字)。 writeString 函数工作正常,但我不明白为什么它只是不在“Set Temp:”之后打印 int setTemp 的值。输出的所有内容是:“Set Temp:”,光标悬空。

可能值得一提的是,光标悬停在 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

}

最佳答案

如果您不定义函数原型(prototype),编译器可能会对它做出错误的假设,并错误地编写其使用代码。在引起您的注意后,我问了定义是什么,因为通常的定义(至少在 MSVC 中)是

char *itoa(int value, char *str, int radix);

这符合你自己对函数的使用,

itoa(setTemp, numberString, 10);

但是在仔细检查你的库头文件时,你说它定义了

itoa(char * buf, int val, int base);

换句话说,前两个参数被调换了。由于 itoa() 不是标准 函数,因此这是允许的,但您必须相应地调用它:

itoa(numberString, setTemp, 10);

(感谢@Eric,他的建议表明它很可能是 itoa 的错)。

关于c - 关于 C 的 itoa() 和 char 数组问题(连接 LCD),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34163179/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com