1. 输入输出函数
字符的输入输出
C语言标准库提供了一次输入一个字符的函数getchar和一次输出一个字符的函数putchar。
Getchar的引用形式为:ch=getchar(),用于从标准输入设备(终端)上读入并返回一个字符。
Putchar函数的引用形式为putchar(ch),它把字符ch送到标准输出设备(终端屏幕)上去。
例子:
Int c;
While ((c=getchar()!=EOF)
Putchar c;
字符串输入输出
C函数提供了gets和puts用来完成这个工作。
gets接收字符串直到遇到回车符’/n’时为止,并以一个’/0’代替’/n’,scanf遇到空白符(空格,制表和换行符)都停止接收后面的字符。
格式输出
格式输出函数printf的一般形式为printf(控制字符串,参数1,参数2…)
格式输入
格式输入用scanf函数实现,其一般形式为(控制字符串,参数1,参数2…)
2. 缓冲文件系统
所谓缓冲文件系统是指:系统自动地为每个正在使用的文件开辟一个缓冲区,从内存向磁盘存数据或从磁盘向内存存取数据都通过这个缓冲区。
而非缓冲区文件系统是指:系统不自动为文件开辟缓冲区,而由程序自己为所需的文件开辟缓冲区。
1) 打开和关闭文件
打开文件用函数fopen完成,其一般形式为FILE *fp; fp=fopen(文件名,文件使用方式);
这里的FILE是一个存放文件属性的结构,在studio.h中定义,fp定义为指向文件结构的指针。函数fopen以指定的方式打开文件,如fp=fopen(“file1”,”r”); 以读方式打开文件file1.
文件的关闭很简单,只需要写fclose(fp);
2) 文件的读写
a) getc 和putc
getc的引用形式为ch=getc(fp);这里的fp是调用fopen时的返回值,getc从fp所指的文件中读取一个字符返回,当读到文件尾时返回文件结束标志EOF。
Putc调用形式为putc(ch,fp);这里的fp是调用fopen时的返回值,putc将字符ch写到fp指向的文件中去。
b) fscanf和fprintf
fscanf和fprintf很像scanf和printf,只是它们对文件进行读写,而不是对标准输入输出设备金溪国内读写。
c) fread和fwrite
这两个函数是ANSIC新增加的,可以读写一个数据块,一般调用形式为
fread(buffer, size, count, fp);
fwrite(buffer,size, count, fp);
其中buffer是一个指针,对fread而言,它指向存放读入数据的缓冲区,对于fwrite而言,它指向要写入文件的数据所存放的缓冲区。
Size是一次要读写多少项。
Count是要读写多少项。
fp是指向文件的指针。
Note:
ANSI C 是美国 American National Standards Institute (ANSI) 出版的C语言标准。凡只用ANSI C 写的程序,所有编译器,MS VC++, Turbo C 等都支持。Turbo C 除支持ANSI C外,还增加了许多别的东西(别的库函数),例如绘图函数。TC 的绘图函数 TC 支持, 别的编译器不支持。同样 MS VC++ 增加的绘图函数,TC 不支持。可以说 ANSI C 是基础的 简单的 “标准的” C,其它的 C 是扩充扩展了的C.
3) 标准的输入输出文件
C程序开始执行时,系统自动打开三个文件:标准输入(stdin),标准输出(stdout)和标准错误输出(stderr)。
4) 文件的随机访问
C语言中用fseek实现文件随机读写的功能,fseek的一般调用形式为
fseek(fp, offset, origin); 其中,fp是指向文件的指针。
origin是起始点,可以取三个值,为0时表示从文件起始位置开始,为1时表示从文件当前位置开始,为2时表示从文件尾部开始。
Offset是一个位移量,它表示从起始点(origin)移动的字节数。它是一个long型数据,这样保证当文件长度超过64k时不致于出问题。
例子:将文件data中的内容反序输出。(没有弄清楚)
#include “studio.h”
Main()
{
FILE *fp;
If (fp=fopen(“data”, “r”))==NULL)
{
Printf(stderr,”can not open file./n”);
exit(1);
}
fseek(fp,-3L,2); /*将位置指针置于文件中最后一个有效字符处。*/
putchar(getc(fp));
while(fseek(fp,-2L,1)==0)/*倒退一个字符*/
putchar(getc(fp));
}
3.非缓冲文件系统
非缓冲文件系统是基于UNIX的,ANSI标准不包含这部分内容。
1) Open函数
Open函数用于打开文件,其调用形式为:
int fd;
fd=open(文件名,打开模式);
open用返回较小的整数fd(称为文件描述字)来标识打开的文件,当打开失败时返回-1。打开模式取三种值:0表示为读打开,1表示为写打开,2表示为读写打开。
2) creat 函数
creat函数用来创建一个新文件,如果文件已经存在,则creat使文件中原来的内容全部丢失,其调用方式因系统而异,TurboC调用形式为:
fd=creat(文件名,打开格式);
当文件创建失败返回-1。
3) Close函数
Close用于关闭文件,其一般形式为:close(fd);
fd 是调用creat或open时返回时文件描述字。
4) Read 函数
read的作用时从指定的文件中读取若干个字符到程序开辟的缓冲区,其一般调用形式为:
n=read(fd,buf,count);
fd是文件描述字,buf是指向用户开辟的缓冲区的指针,count是要求读入的字节数,read是返回真正读入的字节数,文件结束时返回0,出错时返回-1。
5) write函数
write用于从指定的内存缓冲区将若干个字节的内容写到指定的文件中去,其一般调用式为:
n=write(fd,buf,count);
其中fd式文件描述字,buf是指向存放要输出数据的缓冲区的指针,count是要输出的字节数。返回值应于count相同,不同时意味着又某种错误出现。
例子:显示文件的内容
#define SIZE 512
main (argc, argv)
int argc;
char *argv[];
{
Char buf[SIZE];
Int fd,n;
if (argc!=2){
i. printf(“Usage:type file./n”);
ii. exit(1);
}
if ((fd=open(argv[1],0))==-1){
printf(“can not open %s/n”, argv[1]);
exit(1);
}
while ((n=read=(fd, buf, sizeof(buf))>0)
write(1, buf, n);
exit(0);
}