Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在TFT上显示日期而不使用字符形式的数字数组_C++_Arduino_Arduino C++ - Fatal编程技术网

C++ 在TFT上显示日期而不使用字符形式的数字数组

C++ 在TFT上显示日期而不使用字符形式的数字数组,c++,arduino,arduino-c++,C++,Arduino,Arduino C++,我正在尝试从DateTime实例将一个月中的一天写入TFT显示器。DateTime实例的数据来自RTC 基本上,我正在尝试这样做: DateTime-timenow; timenow=rtc.now();//获取当前RTC数据并将其存储为DateTime。 tft.textWrite(timenow.day());//这不起作用(见下文),但它显示了我正在尝试做的想法。 tft.textWrite接受char作为其参数,但timenow.day()显示为输出int。我能让它工作的唯一方法(这显

我正在尝试从
DateTime
实例将一个月中的一天写入TFT显示器。
DateTime
实例的数据来自RTC

基本上,我正在尝试这样做:

DateTime-timenow;
timenow=rtc.now();//获取当前RTC数据并将其存储为DateTime。
tft.textWrite(timenow.day());//这不起作用(见下文),但它显示了我正在尝试做的想法。
tft.textWrite
接受
char
作为其参数,但
timenow.day()
显示为输出
int
。我能让它工作的唯一方法(这显然不是一个好方法,正如你将看到的那样)是将1到31之间的所有数字组成一个巨大的数组,作为
char

const char days[31][3]={“1”、“2”、“3”、“4”、“5”、“6”、“7”、“8”、“9”、“10”、“11”、“12”、“13”、“14”、“15”、“16”、“17”、“18”、“19”、“20”、“21”、“22”、“23”、“24”、“25”、“26”、“27”、“28”、“29”、“30”、“31”};
然后我在代码中使用了数组:

DateTime-timenow;
timenow=rtc.now();//获取当前RTC数据并将其存储为DateTime。
tft.textWrite(天[timenow.day()-1]);
不幸的是,我每年都要做同样的事情,而且我无法在可预见的未来手动将所有年份输入到数组中。它会占用内存,而且会耗费不必要的时间

我的问题是,有人能告诉我如何将
int
转换为
char
以用于此函数,而不需要庞大的数组吗?


String(timenow.day())
char(timenow.day())
再到
char(String(timenow.day())
之类的东西,我都试过了,但它们似乎都不起作用。

您需要将整数转换成字符串

int day=timenow.day();
char-str[12];
sprintf(str,“%d”,天);
文本写入(str);
编辑:

代码说明:

  • 首先,我们将
    timenow.day()的整数值存储到
    day
  • 然后我们声明一个
    char
    数组来存储
    int-day
    char的转换。它将在
    sprintf()
    函数调用中使用。此字符数组必须足够大以容纳转换字符串。这就是我在这里使用char str[12]`的原因。因此,我们有12个字节来存储转换后的值

  • sprintf(str,“%d”,day)
    char*
    作为其第一个参数,将在其中存储转换。第二个参数是要获取的输出字符串的格式。然后,下一个参数是您传递的格式字符串所需的参数,在本例中,它是
    “%d”
    ,这意味着我们需要给它一个整数值。这就是我们将
    day
    变量作为最后一个参数传递的原因


通过在Linux终端上运行
mansprintf
,您可以在
sprintf
功能中获得更多详细信息。否则,您可以获得更多信息。

您需要将整数转换为字符串

int day=timenow.day();
char-str[12];
sprintf(str,“%d”,天);
文本写入(str);
编辑:

代码说明:

  • 首先,我们将
    timenow.day()的整数值存储到
    day
  • 然后我们声明一个
    char
    数组来存储
    int-day
    char的转换。它将在
    sprintf()
    函数调用中使用。此字符数组必须足够大以容纳转换字符串。这就是我在这里使用char str[12]`的原因。因此,我们有12个字节来存储转换后的值

  • sprintf(str,“%d”,day)
    char*
    作为其第一个参数,将在其中存储转换。第二个参数是要获取的输出字符串的格式。然后,下一个参数是您传递的格式字符串所需的参数,在本例中,它是
    “%d”
    ,这意味着我们需要给它一个整数值。这就是我们将
    day
    变量作为最后一个参数传递的原因


通过在Linux终端上运行
mansprintf
,您可以在
sprintf
功能中获得更多详细信息。否则,您可以获得更多信息。

如果您使用的是c++11,您可以使用以下字符串:
tft.textWrite(std::to_string(timenow.day()).c_str())

如果您使用的是c++11,您可以使用以下命令来设置字符串: textWrite(std::to_string(timenow.day()).c_str())