您的位置:首页 > 运维架构

[C] C file operate

2018-03-21 22:22 155 查看

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,否则返回非零值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  c file fread fwrite