C语言文件的打开与关闭_1

打开方式(mode)有多种,见下表:
打开方式	说明
r	以只读方式打开文件,只允许读取,不允许写入。该文件必须存在。
r+	以读/写方式打开文件,允许读取和写入。该文件必须存在。
rb+	以读/写方式打开一个二进制文件,允许读/写数据。
rt+	以读/写方式打开一个文本文件,允许读和写。
w	以只写方式打开文件,若文件存在则长度清为0,即该文件内容消失,若不存在则创建该文件。
w+	以读/写方式打开文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
a	以追加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留(EOF符保留)。
a+	以追加方式打开可读/写的文件。若文件不存在,则会建立该文件,如果文件存在,则写入的数据会被加到文件尾后,即文件原先的内容会被保留(原来的EOF符 不保留)。
wb	以只写方式打开或新建一个二进制文件,只允许写数据。
wb+	以读/写方式打开或建立一个二进制文件,允许读和写。
wt+	以读/写方式打开或建立一个文本文件,允许读写。
at+	以读/写方式打开一个文本文件,允许读或在文本末追加数据。
ab+	以读/写方式打开一个二进制文件,允许读或在文件末追加数据。
文本文件和二进制文件的区别请查看:C语言fopen()打开文本文件与二进制文件的区别
几点说明

1) 文件打开方式由r、w、a、t、b、+ 六个字符拼成,各字符的含义是:
r(read):读
w(write):写
a(append):追加
t(text):文本文件,可省略不写
b(banary):二进制文件
+:读和写

2) 如果没有“b”字符,文件以文本方式打开。

3) 凡用“r”打开一个文件时,该文件必须已经存在。
#include<stdio.h>
#include<windows.h>
int main()
{
    FILE *fp;
    printf("--  %d  \n",fopen("D:\\demo.txt","rb"));
    if((fp=fopen("D:\\demo.txt","rb")== NULL )){
        printf("Error on open D:\\demo.txt file!");
        getch();//getch的功能是从键盘输入一个字符,但不在屏幕上显示。在这里,该行的作用是等待,
        //只有当用户从键盘敲任一键时,程序才继续执行,因此用户可利用这个等待时间阅读出错提示。敲键后执行exit
        exit(1);
    }
}   
    
#include<stdio.h>
#include<windows.h>
#define N 5
int main()
{
    FILE *fp;
    //从键盘输入的数据放入a,从文件读取的数据放入b
    int a[N], b[N];
    int i, size = sizeof(int);
    printf("--  %d  \n",fopen("D:\\demo.txt","rb"));
/*    if((fp=fopen("D:\\demo.txt","rb")== NULL )){
        printf("Error on open D:\\demo.txt file!");
        getch();//getch的功能是从键盘输入一个字符,但不在屏幕上显示。在这里,该行的作用是等待,
        //只有当用户从键盘敲任一键时,程序才继续执行,因此用户可利用这个等待时间阅读出错提示。敲键后执行exit
        exit(1);
    }
*/
    
    if( (fp=fopen("D:\\demo.txt", "rb+")) == NULL ){//要先存在文件  
        printf("Cannot open file, press any key to exit!\n");
        //getch();
        //exit(1);
    }
  
    //从键盘输入数据 并保存到数组a
 /*   for(i=0; i<N; i++){
        scanf("%d", &a[i]);
    }
    //将数组a的内容写入到文件
    fwrite(a, size, N, fp);
    //将文件中的位置指针重新定位到文件开头
    rewind(fp);
*/    //从文件读取内容并保存到数组b
    fread(b, size, N, fp);
    //在屏幕上显示数组b的内容
    for(i=0; i<N; i++){
        printf("%d ", b[i]);
    }
    printf("\n");
    fclose(fp);
    system("PAUSE");
    return 0;
}   




  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值