首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >无法打开2个文件*

无法打开2个文件*
EN

Stack Overflow用户
提问于 2013-07-27 08:52:13
回答 2查看 96关注 0票数 1

我当时正在为Raspberry PI开发编写一个C语言的程序,我已经得到了这个奇怪的bug。

我真的不知道它的起源。到目前为止,这个程序非常简单。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <bcm2835.h>
#include <time.h>
#include <sys/time.h>
#include <stdint.h>
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <getopt.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <linux/types.h>
#include <linux/spi/spidev.h>

int main(int argc, char *argv[])
{
    FILE *file; 
    FILE *file2; 
    FILE *peak1;
    FILE *peak2; 
    file = fopen("input0.txt", "a+"); 
    file2 = fopen("input1.txt", "a+"); 
    peak1=fopen("peak1.txt", "a+");
    peak2=fopen("peak2.txt", "a+");

    fprintf(file, "%s\n", "HELLO!");
    fprintf(peak1, "%s\n", "HELLO!");
}

Bug:-

当我运行程序并检查文件的输出时,只有'input0.txt'编写了"HELLO!",因为'peak1.txt'没有任何东西。

我可以写入前两个文件filefile2,但不能写入第二个文件peak1peak2

我试着写了很多东西,但都没有用。有什么问题吗?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2013-07-27 08:54:33

最后你忘了给fclose(FILE *)打电话了。调用int fclose(FILE *fp);将确保正确地处理文件描述符,并刷新输出缓冲区,从而将写入文件的数据显示在磁盘上的文件中。

来自:IEEE 1003.1,2004年版

(小溪); fclose()函数将导致按流指向的流被刷新并关闭相关文件。流的任何未写入的缓冲数据应写入文件;任何未读取的缓冲数据将被丢弃。无论调用是否成功,流将与文件断开关联,由setbuf()setvbuf()函数设置的任何缓冲区都将与流断开关联。如果自动分配了关联缓冲区,则应将其解除分配。

票数 1
EN

Stack Overflow用户

发布于 2013-07-27 08:56:11

您需要在代码的末尾调用fclose(FILE *)

C库函数int fclose(FILE *stream)关闭流。所有的缓冲器都被冲了。

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

https://stackoverflow.com/questions/17900250

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文