送分!打开一个文件,该如何解决

送分!打开一个文件
一个文件能同时进行读写操作吗?

为什么我第一个语句进行写数据(没有关闭),第二条语句就进行读数据,怎么读出来的数据是有错的呢?

我试过在第一和第二语句之间加上rewind(pFP);

貌似也不行啊

------解决方案--------------------
C/C++ code

#include "unix.h"
int main()
{
    char buf1[] ="1234567891234567991233456789";
    char buf[50];
    int fd,m;
    int i;
    fd=open("2.txt",O_CREAT|O_RDWR);
    
    if (write(fd,buf1,sizeof(buf1)/sizeof(char))!= sizeof(buf1)/sizeof(char))
        printf("write error\n");
    else 
        printf("write ok\n");
    #if 0 //修改这个可以看出不同的
    close(fd);    
    fd=open("2.txt",O_CREAT|O_RDWR);
    if (fd == -1)
    {
        printf("open error\n");
        return ERROR;
    }
    else printf("fd = %d\n",fd);
    #endif     
    if((m = read(fd,buf,50))== -1)
        return ERROR;    
    for (i = 0;i<sizeof(buf1)/sizeof(char);i++)
    {
        printf("%c",buf[i]);
    }    
    return 0;
}

------解决方案--------------------
没有关闭文件时,数据只有在内存中达到一定量后,才写入到文件。fclose()后,流里的数据会全部写入到文件
------解决方案--------------------
会有缓存的,在写入系统之后不会立马同步到磁盘上
------解决方案--------------------
探讨

只有当文件被关闭时,数据才能写到文件中。不然,数据还是在内存的。你先关闭,然后再打开,读写看看结果如何。

------解决方案--------------------
文件指针问题,你可以用lseek把文件指针移到一定的位置然后读写