[C] C file operate

c语言中的文件操作

c语言处理文件的两种方式–文本视图和二进制视图

标准文件:c语言自动为我们打开了三个文件,这三个文件是标准输入、标准输出、标准出错。

1.如何打开和关闭一个文件

FILE *fp=NULL;
fp=fopen("/home/jack/hello.c","r");
fclose(fp);

打开方式有很多种,还可以二进制打开”rb”。此处不一一列举。

2.读写文本文件与二进制文件

FILE *fp=NULL;

fp 是一个文件指针。其指向了打开的文件。一起文件的操作皆通过文件指针fp完成。当通过getc读取一个文件时,文件指针会自动+1,指向下一个字节。putc也同理。

例如,可以通过fp进行内容的读写。

2.1getc与fgetc读取文件

getc(fp);
fgetc(buf,MAX,fp);
#include <stdio.h>

int main() {
    FILE *fp;
    fp = fopen("hello", "r");
    char ch;

    while ((ch=getc(fp))!=EOF){
        putchar(ch);
    }

    fclose(fp);
}

2.2putc与fputc写入文件

putc(fp);
fputc(buf,fp);
#include <stdio.h>
#include <string.h>

int main() {
    FILE *fp;
    fp = fopen("hello", "w");
    char *s = "hello world...";
    int len = strlen(s);

    for (int i = 0; i < len; i++) {
        putc(s[i], fp);
    }

    fclose(fp);
}

3.二进制I/O-fread与fwrite

fread(buffer,255,1,fp);//读取一个255字节的buffer
fwrite(buffer,sizeof(double),10,fp);//写入10个double

4.操作文件指针

fseek设置文件指针的位置

fseek(fp,number,SEEK_END);//结尾+number
fseek(fp,number,SEEK_SET);//开始+number
fseek(fp,number,SEEK_CUR);//当前位置+number

ftell获取文件指针的位置

int index;
index=ftell(fp);

5.fprintf,fscanf从指定流读取内容

#include <stdio.h>
#include <malloc.h>

int main() {
    char *string = (char *) malloc(20);

    fscanf(stdin, "%s", string);
    fprintf(stdout, "%s", string);
}

6.feof与ferror–检测是否到达文件结尾

当标准输入函数返回EOF时,通常已经表示到达文件结尾。但是这也有可能表示读取发生了错误。如何判断时哪种情况呢?feof与ferror可以帮助我们判断。

feof(fp);
ferror(fp);

当到达文件结尾时,feof(fp)返回非零值,否则返回0;当出错时,ferror(fp)返回0,否则返回非零值。

猜你喜欢

转载自blog.csdn.net/eternally123/article/details/79647136