Null 终止字符串显示问题
Issue with Null terminating string display
我已经编写了一小段代码用于在 2x16 字符 LCD 中显示数据。
char str2[] = "Hello Welcome";
char *ptr2=str2;
initializeLCD();
sendLCDCommand(CLEAR_DISPLAY);
while(*ptr2) {
displayInRow1(ptr2++);
CL_delayMS(300);
}
在这段代码中,显示屏显示"Hello Welcomeeeeeeeeeeeeeeeeeeeee"
我认为 while(*ptr2) 将在字符串中打印最后一个字母 "e" 后终止。如果我注释包含 while(*ptr2) 的行,则数据会正确显示。我不确定上面这段代码有什么问题。
我正在使用带有 Atmega328 控制器的 Atmel Studio。 displayInRow1() 函数已经过测试,没有问题。
您的函数 displayInRow1()
接受一个指针并将其传递给显示字符串的 sendTextToLCD()
。这就是当您删除 while
时它可以正常工作的原因。所以你只需要
initializeLCD();
sendLCDCommand(CLEAR_DISPLAY);
displayInRow1(str2);
我不打算解释你得到的结果,只是说 while
循环显示类似这样的东西
Hello Welcome
ello Welcome
llo Welcome
lo Welcome
o Welcome
Welcome
Welcome
elcome
lcome
come
ome
me
e
我已经编写了一小段代码用于在 2x16 字符 LCD 中显示数据。
char str2[] = "Hello Welcome";
char *ptr2=str2;
initializeLCD();
sendLCDCommand(CLEAR_DISPLAY);
while(*ptr2) {
displayInRow1(ptr2++);
CL_delayMS(300);
}
在这段代码中,显示屏显示"Hello Welcomeeeeeeeeeeeeeeeeeeeee" 我认为 while(*ptr2) 将在字符串中打印最后一个字母 "e" 后终止。如果我注释包含 while(*ptr2) 的行,则数据会正确显示。我不确定上面这段代码有什么问题。 我正在使用带有 Atmega328 控制器的 Atmel Studio。 displayInRow1() 函数已经过测试,没有问题。
您的函数 displayInRow1()
接受一个指针并将其传递给显示字符串的 sendTextToLCD()
。这就是当您删除 while
时它可以正常工作的原因。所以你只需要
initializeLCD();
sendLCDCommand(CLEAR_DISPLAY);
displayInRow1(str2);
我不打算解释你得到的结果,只是说 while
循环显示类似这样的东西
Hello Welcome
ello Welcome
llo Welcome
lo Welcome
o Welcome
Welcome
Welcome
elcome
lcome
come
ome
me
e