首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >fflush()的工作方式不符合预期

fflush()的工作方式不符合预期
EN

Stack Overflow用户
提问于 2020-01-12 00:47:49
回答 1查看 56关注 0票数 0

我目前正在做一个项目,我需要文件io。在这个项目中,我经常读写一个文件。但问题是,我无法从文件中读取任何内容。我尝试过使用fflush(),但似乎不起作用。下面我有一些示例代码来演示相同的行为。

代码语言:javascript
运行
复制
#include <iostream>
#include <stdio.h>
using namespace std;

int main() {
    FILE* fp = fopen("file.txt", "w+");
    fprintf(fp, "Test text");
    fflush(fp);

    char c = fgetc(fp);
    fclose(fp);
    cout << c << endl;
    return 0;
 }

我得到了一个未知的字符,而不是像预期的那样c是'T‘。

我使用C io是因为我想避免fstream的大小开销。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-12 01:00:10

看起来文件指针指向文件的末尾,所以返回值是-1,因此得到了奇怪的char。在fflush(); (我认为不需要它,至少对于您所生成的示例)之后,您可以使指针指向具有0偏移量的文件的乞讨:

代码语言:javascript
运行
复制
//...
fflush(fp);
fseek(fp, 0, SEEK_SET);
char c = getc(fp);
//...

这将返回84,这是字符T的正确ASCII码

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59696500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档