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