文件

1,文本文件
文本文件指 每个字节存放一个字符

2,二进制文件
二级制文件是指按其内容直接存入文件
例如:1234在文本文件占4个字节,而在二进制文件占2个字节。
3,输入操作函数
open();close();read();write();
lseek();tell();eof();setmode();chmod();
4,在Visual C++ stdio.h有以下类型定义:
{
char *_ptr;//文件读写位置指针
int _cnt;//缓存区剩余可读写字节数
char *_base;//缓存区起始地址
int _flag;//文件操作标志
int _file;//文件描述符
int _charbuf;//单字节缓存
int _bufsiz;//缓存区的大小
char *_tmpfname;//临时文件名
}
5,**按字符提取文件可以表达成 **

FILE * fp;    //定义文件指针
fp=fopen("file.txt","rt");//打开文件
while((ch=fgetc(fp)!='/0')//从文本文件读取字符
    putchar(ch);
  fclose(fp);//关闭文件
  //文本文件的打开方式用t来表示(读文件“rt”,写文件“wt”)
  //二进制文件用b来表示("读文件“rb",写文件“wb”)

二,字符方式读写文件
1,向文件中写入(输出)一个字符到磁盘文件中去。

int fputc(int ch,FILE *fp)

例12.1* 从键盘输入一串字符(以回车符’\n’结束),然后输入到磁盘文件中。

#include
#include
int main(){
     
       FILE * fp;
       char ch;
       if((fp=fopen("out.txt","w"))==NULL){
     
          printf("无法创建文件!\n");
          exit(0);
}
      while((ch==getchar())!='\n')
         fputc(ch,fp);
         fclose(fp);
         printf("已完成!");
         return 0;   
}

2,从磁盘文件逐个读入字符,并在终端输出。
用fgetc函数或者getc函数可以从磁盘文件读入一个字符。
** int fgetc ( FILE * fp)**

例12.2 从磁盘文件逐个读入字符,并在终端输出。

#include
#include
int main(){
     
     FILE * fp;
     char ch;
     if((fopen("out.txt","r"))==NULL){
     
         printf("无法打开文件!\n");
         exit(0);
}
   while ((ch=fgetc(fp))!=EOF)
     putchar(ch);
     fclose(fp);
     return 0;
}
```**3,向文件中写入一个字符串**fputs(char * string ,FILE  * stream)
**12.3从键盘输入若干行字符把他们输出到磁盘文件中保存起来**

```c
#include
#include
int main(){
     
    FILE *fp;
	char string[81];
	if((fp=fopen("C://Users//wow//Desktop//records.txt","w"))==NULL) {
     
		printf("无法打开文件!\n");
		exit(0);
	}
	while (gets(string)!=NULL){
     //按ctrl +z结束输入
		fputs(string,fp);
		fputc('\n',fp);
	}
	fclose(fp);
	return 0;
} 

4,从文件中读入一个字符串
功能: 从指定文件的流文件读入若干字符并放到字符数组中,当读完n-1个字符或是换行,则结束字符读入。如果是读到换行结束,此时‘\n也作为一个字符送入string数组中。
例,读取文本文件中的内容并在屏幕中显示出来

#include
#include
int main(int argc,char *argv[]) {
     
	FILE *fp ;
	char string[81];
	if((fp=fopen(argv[1],"r"))==NULL){
     
		printf("无法打开文件!\n");
		exit(0);
	}
	while(fgets(string,81,fp)!=NULL)
	     printf("%s",string);
	     fclose(fp);
	     return 0;
}

数据块方式读写文件
fwrite(arr,100,7,fp);
表示从指针arr,所对应的地址开始,将7个数据块的数据输出到FP所指向的文件

struct student{
     
     char name[10];
     char sex;
     int age;
     float score;**加粗样式**
  };

12.5建立学生入学档案文件,每记录包括学生的姓名,性别,年龄和入学总分

这里就写写关键句算了
**fwrite(array,sizeof(array),1,fp)
该语句表示从array中所有元素写入到fp指向的文件中**

例12.6从磁盘文件按记录

fread(&stud,sizeof(stud),1,fp);

读和写为关键语句!!!

你可能感兴趣的:(文件)