C语言文件的打开、关闭、读写

C/C++
252
0
0
2022-12-01

打开文件

fopen(文件名,文件的打开方式)

  • r:对文本文件只读方式(字符ascii)
  • w:对文本文件只写方式(字符ascii)
  • a:对文本文件追加方式(字符ascii)
  • r+,w+,a+对文本文件可读可写方式
  • rb:对二进制文件只读方式
  • wb:对二进制文件只写方式
  • ab:对二进制文件追加方式
  • rb+,wb+,ab+对二进制文件可读可写方式
#include<stdio.h>
int main(){
    FILE *p;
    //p=fopen("abc.dat","w");
    p=fopen("D:\\cccc\\abc.dat","w");
    if(p==NULL){
        printf("error!");
    }else{
        printf("OK"); 
    }
    return 0;
}

关闭文件

一个打开的文件,需要fclose(指向文件的指针);进行关闭,如果不对文件进行关闭,有可能丢失文件的数据。

关闭文件就是将文件缓冲区当中的数据输出到磁盘或输入到内存。

#include<stdio.h>
int main(){
    FILE *p;
    //p=fopen("abc.dat","w");
    p=fopen("D:\\cccc\\abc.dat","w");
    if(p==NULL){
        printf("error!");
    }else{
        printf("OK"); 
    }
    //...... 
    fclose(p); 
    return 0;
}

按字符读写文件

程序---->磁盘

ch=getchar() putchar(ch) gets() puts()

fgets(p):从指针p指向的文件读入一个字符。

fputc(ch,p):把字符ch写到文件指针p所指向的文件中。

例:用fputc函数从键盘逐个输入数据,然后写到磁盘中。

#include<stdio.h>
#include<stdlib.h>
int main(){
    FILE *p;
    p=fopen("abc.dat","w");
    //p=fopen("D:\\cccc\\abc.dat","w"); 
    if(p==NULL){
        printf("error!");exit(0);
    }
    printf("请输入字符,以#结束");
    char ch=getchar();
    while(ch!='#'){
        fputc(ch,p);
        putchar(ch);
        ch=getchar();
    }
    fclose(p); 
    return 0;
}

按照字符读文件

例:读出abc.dat中的文件内容。

#include<stdio.h>
#include<stdlib.h>
#define EOF -1;
int main(){
    FILE *f;
    f=fopen("abc.dat","r");
    if(f==NULL){
        printf("error!");
        exit(0);
    }
    char ch=fgetc(f);
    while(!feof(f)){//EOF=-1 
    putchar(ch);
    ch=fgetc(f);
    }
    fclose(f); 
    return 0;
}

向文件读写一个字符串

  1. fgets(str,n,p):从指针指向的文件中读入一个长度为n的字符串,将此字符串存放到字符数组str中。
  2. fputs(str,p):把str所指的字符串写到文件指针p指向的文件中。

例:将3各字符串存储到文件中。

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(){
    FILE *p;
    p=fopen("abc.dat","r");
    if(p==NULL){
        printf("error!");
        exit(0);
    }
    char str[3][10];
    strcpy(str[0],"hello");
    strcpy(str[1],"china");
    strcpy(str[2],"world");
    for(int i=0;i<=2;i++){
        fputs(str[i],p);fputs("\n",p);
        printf("%s\n",str[i]); 
    }
    fclose(p); 
    return 0;
}
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(){
    FILE *p;
    char str[3][10];
    int i=0;
    p=fopen("abc.dat","r");
    if(p==NULL){
        printf("error!");
        exit(0);
    }
    while(fgets(str[i],10,p)!=NULL){
        printf("%s",str[i]);
        i++; 
    }
    fclose(p); 
    return 0;
}