Null终止字符串显示问题

时间:2015-07-26 16:57:34

标签: c avr-gcc

我编写了一小段代码,用于以2x16字符LCD显示数据。

char str2[] = "Hello Welcome";
char *ptr2=str2;

initializeLCD();
sendLCDCommand(CLEAR_DISPLAY);
while(*ptr2) {
    displayInRow1(ptr2++);
    CL_delayMS(300);
}

在此代码中,显示屏显示“Hello Welcomeeeeeeeeeeeeeeeeeeeeeee” 我想虽然(* ptr2)将在字符串中打印最后一个字母“e”后终止。如果我对包含while(* ptr2)的行进行注释,则数据会正确显示。我不确定上面的代码有什么问题。 我正在使用Atmel Studio和Atmega328控制器。 displayInRow1()函数已经过测试,没有问题。

1 个答案:

答案 0 :(得分:1)

你的函数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
相关问题