gpt4 book ai didi

c - 释放 C 中的文件写锁?

转载 作者:太空宇宙 更新时间:2023-11-04 07:52:47 28 4
gpt4 key购买 nike

我正面临这个奇怪的问题,我很清楚这个问题的答案,但我正在寻找替代方案。每当我以“a+”模式打开文件时,如果我先读取它然后使用 fprintf() 写入它,我就可以使用 fread() 进行读取。如果我改为先写入文件然后读取它,我会在输出中得到空白值。我不想在每次写入后 fclose() FILE 指针 fp,因为我正在执行诸如 write->read->write->read.......n 迭代之类的操作。

是否有实现此目标的最佳方法?

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <poll.h>
#include <linux/input.h>

int main(){

FILE * fp;
fp = fopen("myback.txt", "a+");
char buf[10];

fprintf(fp, "checking");

fread (buf,1,4,fp);
buf[4] = '\0'; //buf has read n bytes
printf("%s \n", buf);
return 0;
}

最佳答案

来自 this fopen reference :

In update mode ('+'), both input and output may be performed, but output cannot be followed by input without an intervening call to fflush, fseek, fsetpos or rewind, and input cannot be followed by output without an intervening call to fseek, fsetpos or rewind, unless the input operation encountered end of file. In update mode, implementations are permitted to use binary mode even when text mode is specified.

因此您不能直接在彼此之后读取或写入,您必须显式设置或重置每个输入和输出函数之间的文件位置。

关于c - 释放 C 中的文件写锁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52699462/

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