我为时钟编写代码并且我正在创建一个函数来显示存储在数组时间中的时间[]
char time[]="23:59:45 ";
char display_time(char *t[], char *, char *, char *);
void main(void)
{
display_time(&time, &hr, &min, &sec);
GLCD_GoTo(5,3);
GLCD_WriteString(time, Font_System7x8);
}
这是我的功能
char display_time(char *t[], char *h, char *m, char *s)
{
*t[0]=*h/10+48;
*t[1]=*h%10+48;
*t[3]=*m/10+48;
*t[4]=*m%10+48;
*t[6]=*s/10+48;
*t[7]=*s%10+48;
}
一切都编译得很好,但我的时间没有得到更新,只显示了初始值。
答案 0 :(得分:1)
(int, char*[])
或()
,但不是(void)
'0'
代替48,再次使用lisibility display_time
没有“显示时间”,为函数写了一个更好的名字,你就完成了: - )
void display_time(char t[], int h, int m, int s) {
t[0] = h / 10 + '0';
t[1] = h % 10 + '0';
t[3] = m / 10 + '0';
t[4] = m % 10 + '0';
t[6] = s / 10 + '0';
t[7] = s % 10 + '0';
}
int main(int, char*[]) {
char time[] = "23:59:45";
int hr = 3, min = 9, sec = 42;
display_time(time, hr, min, sec);
GLCD_GoTo(5,3);
GLCD_WriteString(time, Font_System7x8);
return 0;
}
答案 1 :(得分:-1)
你的类型错了。您不应该发送char *t[]
,因为您没有传递指针数组。此外,您可能没有意识到,&time
与time
相同,没有“时间地址”。你想把char *传递给你的函数。