RT-Thread elmfat使用f_gets函数

RT-Thread 默认是没有使能f_gets函数的,再ffconf.h中可以对其进行设置。
在这里插入图片描述
将其中的宏定义改为

#define	_USE_STRFUNC	1
/* This option switches string functions, f_gets(), f_putc(), f_puts() and
/  f_printf().
/
/  0: Disable string functions.
/  1: Enable without LF-CRLF conversion.
/  2: Enable with LF-CRLF conversion. */

测试代码如下:

static void readwrite_sample(void)
{

    char s[100] = "asdf\nqwer\r\nzxcv\rasdf\nqwer\r\nzxcv\r123\r\n";
    char buffer[128];

    FIL *fp = RT_NULL;
    size_t size = 0;
    int bw;
    fp = rt_malloc(sizeof(FIL));

    f_open(fp, "/text.txt", FA_OPEN_ALWAYS | FA_WRITE);
    f_write(fp, s, strlen(s), &bw);
    f_close(fp);

    f_open(fp, "/text.txt", FA_OPEN_EXISTING | FA_READ);
    size = f_size(fp);
    rt_kprintf("file size=>%d\n", size);
    while (1)
    {
        int ret = f_gets(buffer, 128, fp);
        if (ret == RT_NULL)
            break;
        rt_kprintf("ret=>%x,size=>%d,buff=>%s\n", ret, size, buffer);
        rt_thread_mdelay(100);
    }
    f_close(fp);
    rt_kprintf("...\n");
    rt_free(fp);

}

显示结果如下:

msh />readwrite_sample
file size=>37
ret=>20008ed0,size=>37,buff=>asdf

ret=>20008ed0,size=>37,buff=>qwer

asdf>20008ed0,size=>37,buff=>zxcv

ret=>20008ed0,size=>37,buff=>qwer

123=>20008ed0,size=>37,buff=>zxcv

...

可以发现,\r\n和\n都会被认作行结束标志,但/r会在下一行的开头进行输出(这里可能是xshell的显示支持原因)。

另外关于对函数的使用介绍,可以参考另一篇博文:FATFS 初学之 f_gets/ f_putc/ f_puts/ f_printf

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值