C语言-文件操作

fopen() 文件的打开操作,这里有两种模式,第一种读操作,第二种写操作

/*
文件操作演示
*/
#include <stdio.h>
int main() {
    FILE* p_file = fopen("a.txt", "w"); //以写的方式打开文件 
    if (!p_file) {
        printf("文件打开失败"); 
        return -1; 
    }
    fclose(p_file); 
    p_file = NULL; 
    return 0; 
}

使用fopen()进行读操作,使用fwrite进行写操作, fwrite(arr, sizeof(int), 5, p_file);

/*
文件演示操作
*/
#include <stdio.h>
int main() {
    int arr[5] = {0, 1, 2, 3, 4}; 
    FILE *p_file = NULL; 
    p_file = fopen("a.txt", "w"); 
    if(p_file) {
        fwrite(arr, sizeof(int), 5, p_file); 
        fclose(p_file); 
        p_file = NULL; 
        return 0; 
    }
    return -1; 

}

使用fopen()进行打开,使用fread() 进行文件的读操作

/*
fread 文件读取设置 
*/ 
#include <stdio.h>
int main() {
    int arr[10] = {0}; 
    int size = 0; 
    FILE* p_file = NULL; 
    p_file = fopen("a.txt", "rb"); 
    if (p_file) {
        size = fread(arr, sizeof(int), 10, p_file);
        for(int i = 0; i < size; i++) {
            printf("%d ", arr[i]); 
        } 
        printf("\n"); 
    }
    return 0; 

}

使用fprintf进行单个字符串的写入操作

/*
将数据写入到文件中
*/ 
#include <stdio.h>
#include <string.h>
int main() {
    char tmp[10] = {0}; //定义字符串 
    int arr[10] = {0, 1, 2, 3, 4}; 
    FILE *p_file = NULL; 
    p_file = fopen("a.txt", "w"); 
    if(p_file) {
        for (int num = 0; num < sizeof(arr);num++){
            /*sprintf(tmp, "%d ", arr[num]); 
            fwrite(tmp, sizeof(char), strlen(tmp), p_file); 
            */ 
            fprintf(p_file, "%d ", arr[num]); 
        }
        fclose(p_file); 
        p_file = NULL;     
    }

}

使用fscanf从文件中读取数据,使用scanf(p_file, "%d ", val) 读取数据 

/*
fscanf 从文件中获取数据 
*/ 
#include <stdio.h>
int main() {
    int val = 0; 
    int arr[10] = {0}; 
    int num = 0; 
    FILE *p_file = NULL; 
    p_file = fopen("a.txt", "rb"); 
    if(p_file) {
        for (num = 0;num < 5;num++) {
            fscanf(p_file, "%d ", &val); //"%d" 表示读取方式,光标向下移动 
            printf("%d ", val); 
            arr[num] = val; 
        }
    printf("\n"); 
    }
    for(num = 0;num < 5;num++) {
        printf("%d ", arr[num]);     
    }
    printf("\n"); 
}

使用rewind将数据指针移动到文件的开头, ftell打印出当前的光标位置,fseek进行光标的移动

/*
位置指针演示
*/ 
#include <stdio.h>
int main() {
    char ch = 0; 
    FILE *p_file = NULL; 
    p_file = fopen("abc.txt", "rb"); 
    if (p_file) {
        // rewind(p_file); //把位置指针移动到文件开头(把代表位置指针的数值设置成0)
        fseek(p_file, 2, SEEK_SET); 
        printf("%ld\n", ftell(p_file)); //获得位指针数值并把结果显示在屏幕上 
        fread(&ch, sizeof(char), 1, p_file); //进行数据的读取 
//从文件里获得一个字符数组 
        // rewind(p_file); 
        fseek(p_file, 3, SEEK_CUR); 
        printf("%c\n", ch); 
        printf("%ld\n", ftell(p_file));
        fread(&ch, sizeof(char), 1, p_file); 
//从文件里获得一个字符数组
        // rewind(p_file);  
        fseek(p_file, -3, SEEK_END); 
        printf("%c\n", ch); 
        printf("%ld\n", ftell(p_file));
    
        fread(&ch, sizeof(char), 1, p_file); 
//从文件里获得一个字符数组 
        fclose(p_file);     
        p_file = NULL; 
    }
    return 0; 
}

编写数据进行写入,这里主要使用两种方法,第一种使用fwrite和fread进行组合获得输入数组,第二种方法使用fprintf 和 fscanf 进行文件的写入操作

文件写入:

/*
将字符串写入到文件中
*/ 
#include <stdio.h>
int main() {
    int arr[][5] = {1, 1, 1, 1, 1,
                    2, 2, 2, 2, 2, 
                    3, 3, 3, 3, 3, 
                    4, 4, 4, 4, 4, 
                    5, 5, 5, 5, 5};     
    int i = 0; 
    int j = 0; 
    FILE *p_file = NULL; 
    p_file = fopen("b.bin", "wb"); 
    if (p_file) {
        /* 
        方式一 
        fwrite(arr, sizeof(int), 25, p_file); 
        */ 
        //方式二 
        for (i = 0;i < 5;i++) {
            for (j = 0;j < 5;j++) {
                fprintf(p_file, "%d ", arr[i][j]);
            } 
        }
        fwrite("\n", sizeof(int), 4, p_file); 
        fclose(p_file); 
        p_file = NULL; 
    }
}

文件读取

/*
从文件中获得二维数组
*/ 
#include <stdio.h>

int main() {
    int num = 0; 
    int i = 0; 
    int j = 0; 
    int arr[5][5] = {0}; 
    FILE * p_file = NULL; 
    p_file = fopen("b.bin", "rb"); 
    if (p_file) {
        /* 
        第一种方式 
        for (i = 0;i < 5;i++){
                fread(arr[i], sizeof(int), 5, p_file); 
        }
        */ 
        //第二种方式 
        for (i = 0;i < 5;i++) {
            for (j = 0;j < 5;j++) {
                //这个和读取的方式需要进行配套 
                fscanf(p_file, "%d ", &arr[i][j]); 
            }
        }

        for (i = 0;i < 5;i++) {
            for (j = 0;j < 5;j++) {
                printf("%d ", arr[i][j]);
            }
            printf("\n"); 
        }
        fclose(p_file); 
        p_file = NULL; 
    }
        
}

 

posted @ 2020-03-26 13:57  c语言我的最爱  阅读(229)  评论(0编辑  收藏  举报