c ++类中的setbuf

时间:2017-02-22 00:02:24

标签: c++ printf stm32 mbed

我在课堂上遇到了setbuf的问题,我从mbed移植到我的STM32项目中使用LCD显示方法<iframe #frame></iframe> import * as srcDoc from 'srcdoc-polyfill'; @ViewChild('frame') public iframe:ElementRef; srcDoc.set(this.iframe.nativeElement, "<html><body>test</body></html>"); ,这是我的构造函数:

printf

程序在到达行时停止:

Stream::Stream(void) : _file(NULL) {
    /* open ourselves */
    char buf[12]; /* :0x12345678 + null byte */
    std::sprintf(buf, ":%p", this);
    _file = std::fopen(buf, "w+");
    setbuf(_file, NULL);
}

我需要帮助。

2 个答案:

答案 0 :(得分:1)

我注意到你没有检查fopen的返回值,它可能是NULL。请注意,不需要标准文件函数执行null检查。也许您没有权限在当前目录中创建该文件?

答案 1 :(得分:0)

我很确定STM32没有实现文件系统调用,因此fopen和朋友不会工作。如果要存储/读取数据,则需要查看MCU的非易失性存储器(NVM)或EEPROM API。遗憾的是,这在STM32 MCU之间并未标准化。