C语言:文件

1.打开与关闭文件

(1)fopen函数打开数据文件

fopen(文件名,使用文件方式);

例;

fopen("a1","r");

表示要打开的名字为"a1"的文件,使用文件方式为"读入"(r代表read,即读入)。fopen函数的返回值是指向a1文件的指针(即a1文件信息区的起始地址)。通常fopen函数的返回值赋给一个指向文件的指针变量。如:

         FELE*fp;                    //定义一个指向文件的指针变量fp

         fp=fopen("a1","r");      //将fopen函数的返回值赋给变量fp

这样fp与a1相联系了,或者说,fp指向了a1文件。可以看出,在打开一个文件时,

编译器有3个信息:(1)需要打开文件的名字,也就是准备访问的文件名字;(2)使用文件的方式("读"还是"写"等);(3)让哪一个指针变量指向被打开的文件

使用文件方式见表:

(2)用felose函数关闭数据文件

(1)

3.顺序读写数据文件

(1)怎样向文件读写字符

例:

分析:

例2;

(2)怎样向文件读写一个字符串

c语言允许通过函数fgets和fputs一次读写一个字符,例:

fgets(str,n,fp);

作用是从fp所指向的文件中读入一个长度n-1的字符串,并在最后加一个'\0'字符,然后把这n个字符串放在字符数组str中

例:

程序分析:

(3)用格式化的方式读写文件

fprintf(文件指针,格式化字符串,输出表列);

fscanf(文件指针,格式化字符串,输出表列);

例:

fprintf(fp,"%d,%6.2f",i,f);

它的作用是将int型变量i和float型变量f的值按照%d和%6.2f的格式输出到fp指向的文件中。

若i=3,f=4.5,则输出到磁盘文件上的是以下字符:

3,4.50

(4)用二进制方式向文件读写一组数据

fread(buffer,size,count,fp);

fwrite  (buffer,size,count,fp);

例:

程序分析:

(5)随机读写数据文件

(1)文件位置标记及其定位

用rewind函数使文件位置标记指向文件开头

作用是使文件位置标记重新返回文件的开头,此函数没有返回值

(2)改变文件位置标记

用fseek函数改变文件位置的标记

fseek(文件类型指针,位移量,起始点)

例:

程序分析:

4.文件读写的出错检测

fgetc():
定义函数
int fgetc(FILE * stream);
函数说明
fgetc()从参数stream所指的文件中读取一个字符。若读到文件尾而无数据时便返回EOF
返回值
fgetc()会返回读取到的字符,若返回EOF则表示到了文件尾。

getc():
功 能: 从流中取字符 
用 法: int getc(FILE *stream);
注意: 此函数被ISO C声明为一个宏,所以在用时不能将其做为函数指针传(有一些编译器将其以函数形式也给另说)。它的原型如下  #define getc(_stream) (--(_stream)->_cnt >= 0?0xff & *(_stream)->_ptr++ : _filbuf(_stream)) 
补充: 在C语言中,用函数getc(fgetc)从文件读取字符。getc、fgetc用法相同。 getc的调用形式:ch=getc(fp);此处的fp是文件指针;函数功能是从文件指针指向的文件读入一个字符,并把它作为函数值返回给字符型变量ch。

 

isupper函数

原型:extern int isupper(int c);  
头文件:ctype.h   
功能:判断字符c是否为大写英文字母 
说明:当参数c为大写英文字母(A-Z)时,返回非零值,否则返回零。

tolower函数

toupper()将字符转换为大写英文字母

1

2

char ch;

ch = toupper('a'); // ch 就为 A

tolower()把字符转换成小写字母

1

2

char ch;

ch = tolower('A'); // ch 就为 a

 

1.判断是否是字母

isalpha(),若是返回true,否则返回false

2.判断是否是数字

isdigit(),若是返回true,否则返回false

3.判断是否是大写字母

isupper(),  若是返回true,否则返回false;

4.判断是否是小写字母

islower(),若是返回true,否则返回false;

5.大写转化为小写字母

tolower()

6.小写转化为大写字母

toupper()
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值