gpt4 book ai didi

c - 如何将 char 变量传递给 FS_write() 函数 - EmFile?

转载 作者:行者123 更新时间:2023-11-30 15:30:08 25 4
gpt4 key购买 nike

我正在尝试使用EmFile库进行基于C的嵌入式编程。

这是API文档中FS_write的结构:

U32 FS_Write (FS_FILE * pFile,
const void * pData,
U32 NumBytes);

我想编写自己的函数供以后使用,例如:

void SD_write_to_file(char buff)
{

if(pFile)
{

if(0 != FS_Write(pFile, buff, strlen(buff)))
{

}
else
{
FontWrite_Position(100,148);//Text written to the position
PutStringLCD("Failed to write data to file");
}
}
}

问题是当我调用这个函数并传递我的 char 值时,它不能将其用于 FS_write。例如:

    sprintf(tempwordshow, "%f", realSamples[realsamplescounter]);

SD_write_to_file(tempwordshow);

realSample[ ] 是 float,tempwordshow 是 char。

请注意,如果使用如下函数:

    if(0 != FS_Write(pFile, "0123456789", 10u))

它正在工作。

我认为问题出在将数据传递给该函数的方式上。

有什么想法吗?

谢谢

最佳答案

一般来说,确保以指针作为参数的函数确实是接收者指针。相反,如果您打算使用指针,则应确保函数的签名将指针作为参数。

在这种特殊情况下,您的意图似乎是编写一个字符缓冲区(可以通过将指针传递给与缓冲区相对应的内存位置来将其传递给函数),这很可能不仅仅是一个字符字符。相应地,SD_write_to_file的签名应更改为:

  void SD_write_to_file(const char* buff)

您可能会遇到类似的问题,sprintf 的第一个参数预计为 char* 类型,而您提到 tempwordshowchar 类型(另请注意,无论 tempwordshow 指向的地方都应该分配内存)。如果您的问题中不是一个简单的拼写错误,那么您必须将 tempwordshow 的声明转换为以下内容:

  char tempwordshow[40]; // a 40-char buffer should be large enough for %f

最后一点,strlen 旨在处理以 null 结尾的字符序列(或字符串)。因此,如果您打算严格将此函数用于空终止字符串,那么这很好。否则,您可能会发现传递要写入的缓冲区的长度更合适(例如 SD_write_to_file(const char* buff, int bufferLength))。

关于c - 如何将 char 变量传递给 FS_write() 函数 - EmFile?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25776113/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com