7.2 memset清空 sprintf装填
学了void lcd1602_write_str(unsigned char x, unsigned char y, char *s)函数后,写显示函数就简单了。
你会定义一个数组,比如是 buffer[16]。
当你想显示hello的时候,你可以这么写:
buffer[0]='h';
buffer[1]='e';
buffer[2]='l';
buffer[3]='l';
buffer[4]='o';
buffer[5]=0; //必须给0,指针指到这里认出0就代表空了
lcd1602_write_str(3,1,buffer);//指针指向数组的首位,然后指针一直后移,最终写入完整hello
但上面的方法不方便,比如你想显示一个变量abc,你得这么写:
int abc=54;
buffer[0]='0'+abc%100/10;//百分号是取余运算,/是整除运算,可百度。加'0'是为了变成ascii码。
buffer[1]='0'+abc%10;
buffer[2]=0;
lcd1602_write_str(3,1,buffer);
C语言发明者就发明了一个通用函数sprintf,这让这个操作简单了。
比如你想把字符串“hello”装入数组里,你可以直接:
sprintf(buffer, "hello");//装填
C语言就会把字符串一个一个填入数组,这个时候你就可以调用类似于lcd1602_write_str(3,1,buffer);这样去显示了。
比如你想把abc变量变成字符串然后写入数组,你可以直接:
sprintf(buffer, "hello %d",abc);//装填 %d是十进制表示的意思
sprintf(buffer, "hello %d %d",abc, abc);//可以一次装填多个变量
第一个参数是数组指针 buffer
第二个参数是字符串样式
第三个参数和后面参数是一些变量
这个时候还有个问题,就用sprintf(buffer, "hello");//装填举例,执行这句话后数组里是变成字符串了,此时有:
buffer[0]='h';
buffer[1]='e';
buffer[2]='l';
buffer[3]='l';
buffer[4]='o';
但是并不能保证数组里面其他的元素是0!!
C语言发明者就搞了一个memset函数,能够初始化一切数组。
此时就可以:
memset(buffer, 0, sizeof(buffer));
第一个参数是数组指针 buffer
第二个参数是想把数组里面所有元素初始化为0
第三个参数是想初始化多长的元素,sizeof(buffer)表示想初始化数组里所有元素。
|