【C语言】文件读写函数使用

综合描述按字符,按行,按块读写方式。
#include <stdio.h>
#include <string.h>

void fileCharWrite() {
    FILE *file_write = fopen("./test01.txt", "w");
    if (!file_write) {
        //ERROR: No such file or directory
        perror("ERROR");
        return;
    }

    char ch = 'a';

    for (int i = 0; i < 5; ++i) {
        fputc(ch, file_write);
    }

    fclose(file_write);

}


void fileCharRead() {
    FILE *file_read = fopen("./test01.txt", "r");
    if (!file_read) {
        perror("ERROR");
        return;
    }

    //注意此时会体现出feof()的滞后性,最后会将EOF标识符赋予ch,或可在赋值后进行if判断,避免EOF
    // while(!feof(file_read))
    // {
    // 	char ch = fgetc(file_read);
    // 	printf("%c\n", ch);
    // }

    //以下方式亦可避免
    char ch;
    while ((ch = fgetc(file_read)) != EOF) {
        printf("%c\n", ch);
    }

    fclose(file_read);

}


//按行
void fileLineReadWrite() {
    //写
    FILE *file_write = fopen("./test02.txt", "w");
    if (!file_write) {
        perror("ERROR");
        return;
    }

    char *arr[] = {
            "锄禾日当午\n",
            "汗滴禾下土\n",
            "谁知盘中餐\n",
            "粒粒皆辛苦\n"
    };

    for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); ++i) {
        fputs(arr[i], file_write);
    }

    fclose(file_write);


    //读
    FILE *file_read = fopen("./test02.txt", "r");
    if (!file_read) {
        perror("ERROR");
        return;
    }

    char temp[100] = {0};
    while (fgets(temp, 100, file_read)) {
        printf("%s", temp);
    }

    fclose(file_read);

}


//按块
void fileBlockReadWrite() {
    //写
    FILE *file = fopen("./test03.txt", "w");
    if (!file) {
        perror("ERROR");
        return;
    }

    char *arr[] = {
            "锄禾日当午\n",
            "汗滴禾下土\n",
            "谁知盘中餐\n",
            "粒粒皆辛苦\n"
    };

    for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); ++i) {
        fwrite(arr[i], strlen(arr[i]), 1, file);
    }

    fclose(file);


    //读
    file = fopen("./test03.txt", "r");
    if (!file) {
        perror("ERROR");
        return;
    }

    char temp[100] = {0};
    while (fread(temp, strlen(arr[0]), 1, file)) {
        printf("%s", temp);
    }

    fclose(file);

}


void test() {
    //fileCharWrite();
    //fileCharRead();
    //fileLineReadWrite();
    fileBlockReadWrite();

}

int main(int argc, char const *argv[]) {
    test();
    return 0;
}
发布了44 篇原创文章 · 获赞 68 · 访问量 5139

猜你喜欢

转载自blog.csdn.net/qq_25404477/article/details/100049294