在linux中我们知道一切皆文件,那么在c语言中文件操作有哪些呢,我们来看一下。
1.新建文件
定义文件类型指针变量的一般形式是:
FILE *指针变量
例如:FILE *fp1 *fp2
在进行文件操作以前,我们需要先创建一个文件,这时候需要调用到fopen()函数,fopen()的调用格式是: fopen(文件名, 文件的使用方式)
例如:
FILE *fp
fp = fopen("file_a", "r")
在c语言中常见的文件使用方式有:
"r" : 以只读方式打开,如果文件不存在,则报错
"rb" : 以二进制只读方式打开一个文件
"w" : 以写方式打开一个文件,如果文件不存在,则新建一个文件,如果文件存在,则会清空文件内容,重新写入
"wb" : 以二进制写方式打开一个文件
"a" : 以追加模式打开一个文件,新内容写入文件尾,不会清空原文件
当文件新建以及操作结束以后,要关闭文件,这时候要调用fclose()函数。
2 输入和输出
在成功的打开文件以后,接下来的事情就是输入和输出操作,最简单的就是调用getc()和putc()函数来实现字符的输入和输出
2.1字符的输入和输出
putc()的调用形式是:putc(ch, fp)
这里的ch是待输入的字符,可以是一个常量,也可以是一个变量, fp是文件指针,putc的功能是将ch写入到文件fp中去。
getc的调用形式是 ch = getc(pf)
这里的pf是文件指针,函数的功能是从pf指定的文件中读入一个字符串,并将它作为返回值赋值给ch。
判断文件是否结束feof(),文件结束返回1,没有结束返回0
2.2 字符串的输入和输出
fscanf()函数是从文件中按格式输入,调用形式是fscnf(文件指针, 格式控制符, 输入项表)
例如: fscnf(fp, "%d%d", &a, &b)
fprintf()函数将内存中的数据转化成相应的字符,然后写入文件中,调用形式是fprintf(文件指针, 格式控制符, 输出项表)
例如: fprintf(fp, "%d%d", x, y)
2.3 fgets()函数和fputs() 函数
fgets()函数是从文件中读取字符串,调用格式是fgets(str, n, fp), 其中str是存放字符串的起始位置,n 是一个int型的变量,函数的功能是从fp制定的文件中读入n-1个字符串放入str为起始地址的空间中。
fputs()函数是把字符串输出到文件中,调用格式是fputs(str, fp),此处的str可以是字符串常量,指向字符串的指针或者是存放字符串的字符数组等。
2.4 fread和fwrite函数
fread()和fwrite()函数是分别用来读写二进制文件的,他们的调用格式是
fread(buffer,size,count,fp)
fwrite(buffer,size,count,fp)
其中buffer是数据块的指针,size是指每个数据块的字节数,count用来指定每次读写一次,输入或者输出数据块的个数
例如:
struct st
{ char nums[8];
float mk[5];
pers[30];
}
for (i = 0; i< 30; i++ )
fwrite( &pers[i], sizeof( struct st ), 1, fp) //输出到fp中去
i = 0;
fread( &pers[i], sizeos( struct st ), 1, fp);
while (! feof( fp))
{ i++;
fread( &pers[i], sizeos( struct st ), 1, fp); //将数据读入到pers数组中去
}
2.5 文件定位函数
2.5.1 fseek()函数
fseek()函数是用来移动文件位置指针到指定的位置上,接着读写操作,函数调用格式是fseek(pf, sffset,origin); pf是指文件指针,offset是以字节为单位的位移量,为长整形,origin是起始点
B标识符 | 数字 | 代表的起始点 |
---|---|---|
SEEK_SET | 0 | 文件开始 |
SEEK_END | 2 | 文件末尾 |
SEEK_CUR | 1 | 文件当前位置 |
2.5.2 ftell()函数
ftell()函数是用来获得当前位置指针的位置,调用格式是:
long t;
t = ftell(pf)
网友评论