fopen的工作原理

FILE *fp;

fp=fopen("filename.txt","w");

首先检测filename.txt是否存在,如果不存在则在磁盘 创建该文件,然后在内存开辟区域(应该是缓冲区)准备写该文件

调用fclose时,将内存中的内容写入到磁盘中去

 

测试(filename.txt不存在):

#include <stdio.h>
#include <stdlib.h>
int main()
{
    FILE *fp1,*fp2;
    fp1=fopen("filename.txt","w");
    if(fp1==NULL)
    {
        printf("fp1 open failed!/n");
    }
    else
    {
        printf("fp1 open success!/n");
    }
    fp2=fopen("filename.txt","r");
    if(fp2==NULL)
    {
        printf("fp2 open failed!/n");
    }
    else
    {
        printf("fp2 open success!/n");
    }
    fclose(fp1);
    fclose(fp2);
    return 0;
}

输出:

fp1 open success!

fp2 open success!

说明文件操作不是互斥的,而且以写方式打开文件,如果文件不存在,先在磁盘创建该文件

 

加入写入语句:

#include <stdio.h>
#include <stdlib.h>
int main()
{
    FILE *fp1,*fp2;
    fp1=fopen("filename.txt","w");
    if(fp1==NULL)
    {
        printf("fp1 open failed!/n");
    }
    else
    {
        printf("fp1 open success!/n");
        fputs("abcdef",fp1);
    }
    fp2=fopen("filename.txt","w");
    if(fp2==NULL)
    {
        printf("fp2 open failed!/n");
    }
    else
    {
        printf("fp2 open success!/n");
        fputs("ABC/n",fp2);
    }
    fclose(fp1);
    fclose(fp2);
    return 0;
}

打开filename.txt文件:

ABC
f

说明后关闭的,刷新了磁盘数据

 

《C语言参考手册》第五版,机械工业出版社,p261,有一段

 

在标准C语言中,访问方式字符串还可以在上述方式符之后包含其他字符。实现可以用这些补充指定数据流的其他属性,例如:

f=fopen("C://work//dict.txt","r,access=lock");

 

编译不报错,可惜

fp1=fopen("filename.txt","w, access=lock");

fp2=fopen("filename.txt","w, access=lock");

没看到任何影响,我用的是codeblock GNU GCC compiler

而且改 fp1=fopen("C://work//dict.txt","r,ac");也没任何错误



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值