程序为什么需要文件?1>配置unix采用文本 Windows采用注册表二进制文件2>媒体数据存档在二进制文件中
还有很多用处
首先以标准的输入输出谈起~
(1)格式输入输出
printf("%[flag][width][.prec][hlL]type");
1>
flag 含义
- 左对齐 + 允许显示正号 0 0填充举例:
int main(){ a = 123; printf("-9%d",a); printf("+9%d",a); a = 123; printf("+9%d",a); printf("9%d",a); return 0; }
屏幕上打印为
--------------------------
123 +123 -123 -123--------------------------2>width或prec 含义
number 最小字符数 * 下一个参数是字符数.number 小数点后保留几位 .* 下一个参数是小数点后的位数举例:a = 123.4512;printf("9.2%d",a);printf("",a);//9代表至少有九个字符,2后面保留的小数数位屏幕上打印为-------------------------- 123.45--------------------------
3>hlL修饰符
hh 单个字节h shortl longll long longL long double4>type
显示类型%d 整数类型%f float%o 八进制%x 十六进制e 指数n 输入输出的个数例如printf("%nd",1234,&num) //num储存了输出的个数,在这个例子中是4hh char h short l long double (2)文件的操作1>文件的打开与创建
用到fopen函数,先看一个例子
FILE *fp = fopen("12.in","r");if(fp){ fscanf(fp,"%d",&num); fclose(fp);}else{ //文件打开是失败}
FILE *fopen(char *pname,char *mode)
上述为函数原型,入口参数如下所示
pname:是一个字符指针,它将指向要打开或建立的文件的文件名字符串。
mode:是一个指向文件处理方式字符串的字符指针。所有可能的文件处理方式如下所示----------------------------------
r 打开只读r+ 打开读写,从文件开头开始w 打开只写,文件不存在则新建,如果存在则清空w+ 打开读写,文件不存在则新建,如果存在则清空 a 打开追加..x 只新建,如果已经存在则无法打开
----------------------------------
返回值为状态:
正常返回:被打开文件的文件指针。异常返回:NULL,表示打开操作不成功。总结一下
打开文件的作用是:
(1)分配给打开文件一个FILE 类型的文件结构体变量,并将有关信息填入文件结构体变量;(2)开辟一个缓冲区;(3)调用操作系统提供的打开文件或建立新文件功能,打开或建立指定文件;2>文件的关闭
文件的关闭简单,就是利用fclose函数
int fclose(FILE *fp);
入口参数为文件指针,返回值为状态(正常为0,错误为EOF)
3>文件的读写操作
文件的读写有多种函数。
举一个例子,格式化读写。
格式化写
1.函数原型
int fprintf(FILE *fp,char *format,arg_list)
2.功能说明
将变量表列(arg_list)中的数据,按照format指出的格式,写入由fp指定的文件。fprintf()函数与printf()函数的功能相同,只是printf()函数是将数据写入屏幕文件(stdout)。3.入口参数说明 fp:这是个文件指针,指出要将数据写入的文件。 format:这是个指向字符串的字符指针,字符串中含有要写出数据的格式,所以该字符串成为格式串。格式串描述的规则与printf()函数中的格式串相同。 arg_list:是要写入文件的变量表列,各变量之间用逗号分隔。void main(){ char name[10]; int nAge,nClass; long number; FILE *fp; if((fp=fopen("student.txt","w"))==NULL) { printf("The file %s can not be opened.\n","student.txt"); return; } fscanf(stdin,"%s %d %d %ld",name,&nClass,&nAge,&number); fprintf(fp,"%s %5d %4d %8ld",name,nClass,nAge,number); fclose(fp); if((fp=fopen("student.txt","r"))==NULL) { printf("The file %s can not be opened.\n","student.txt"); return; } fscanf(fp,"%s %d %d %ld",name,&nClass,&nAge,&number); printf("name nClass nAge number\n"); fprintf(stdout,"%-10s%-8d%-6d%-8ld\n",name,nClass,nAge,number); fclose(fp);}
下面一篇文章对文件读写做出详细说明