文件是什么
C将文件看成连续的字节序列,其中每一个字节都可以单独地读取。
两种文件视图
文本视图 二进制视图
程序看到的内容和文件的内容有可能会不同。
例如程序会将其他表示行尾转为\n
用于文本文件 用于二进制文件
两种I\O级别
低级IO使用操作系统提供的基本IO服务
标准高级IO使用一个标准的C库函数包和stdio.h头文件中的定义。
三个标准文件
标准输入:通常为键盘
getchar(), gets(), scanf()
标准输出:通常为显示器
putchar(), puts(), printf()
标准错误输出:通常为显示器
标准IO
相对于低级IO优势:
1、 标准IO包中包含很多专用的函数,可以方便处理不同的IO问题;
2、 对输入和输出进行了缓冲,也就是说,大块地转移信息,而不是每次一个字节进行转移。
Exit()函数关闭所有打开的文件并终止程序。Exit()函数的参数会被传递给操作系统,以供其他程序使用。通常的约定是正常终止的程序传递值为0,非正常终止的程序传递非零值。
Return 0 等用于 exit(0),除非main()递归.
fopen()
fopen(地址, 模式)用来打开文件
fopen()函数的模式字符串
“r” 打开一个文本文件,可以读取文件
“w” 打开一个文本文件,可以写入文件,先将文件的长度截为零,如果该文件不存在则先创建
“a” 打开一个本文文件,可以写入文件,向已有文件的尾部追加内容,如果该文件不存在则先创建
“r+” 打开一个本文文件,可以进行更新,也即可以读取和写入文件
“w+” 打开一个本文文件,可以进行更新,也即可以读取和写入文件;如果该文件存在,则先将其长度截为零;如果不存在则先创建。
“a+” 打开一个本文文件,可以进行更新,也即可以读取和写入文件;如果该文件不存在则先创建可以读取整个文件,但写入时只能追加内容。
“rb”, “wb”, “ab”, “ab+”, “a+b”, “wb+”, “ab+”, “a+b” 与上述模式相似,只是使用二进制模式而非本文模式打开文件
成功打开文件后,fopen会返回一个文件指针;
不能打开文件,fopen会返回空指针
getc()与putc()
需要知道将要使用的文件
ch=getc(fp):从指针fp指定的文件中获得一个字符;
putc(ch, fpout):将字符ch写入到file指针fpout指定的文件中;
putc(ch, stdout):将字符ch输出到显示器,等同于putchar(ch);
类似地,getc(stdout)等同于getchar()
如果在尝试读入字符时发现已经达到文件结尾,getc()函数会返回一个特殊值EOF
eg:
int ch;
file *fp;
fp=fopen(“wacky.txt”,”r”);
while((ch=getc(fp)!=EOF)
{
putchar(ch);
}
fclose()
fclose(fp)函数关闭由指针fp指定的文件,同时根据需要刷新缓冲区,更正规的程序也许还要检查是否成功关闭了文件。如果成功关闭文件,fclose()函数将返回值0,否则返回eof。
if(fclose(fp)!=0)
printf(“error in closing file %s\n”, avg[1]);
标准文件指针
标准文件 文件指针 一般使用设备
标准输入 stdin 键盘
标准输出 stdout 显示器
标准错误 stderr 显示器
上述指针都是FILE指针类型
fgets(buf, MAX, fp)约等于gets(buf)
buf:用于存储输入的地址,这里为一个char数组;
MAX:表示输入字符串的最大长度;
fp:文件指针,指向要读取的文件。
fgets()在达到字符最大数目之前读完了一个整行,它将在字符串的空字符之前添加一个换行符以标识一行结束,这是和gets()函数的不同之处,gets()函数读取换行符后将其丢弃。
fgets()函数和gets()函数类似,遇到EOF的时候会返回NULL值,可以根据此检查文件结尾。否则,它返回传递给它的地址值。
Fputs()接受两个参数,一个字符串地址和一个文件指针,与puts()不同,fputs()打印时候不会添加一个换行符。
Fseek()定位到打开的文件的任意字节处
Ftell()以一个long类型值来返回一个文件的当前位置。
C将文件看成连续的字节序列,其中每一个字节都可以单独地读取。
两种文件视图
文本视图 二进制视图
程序看到的内容和文件的内容有可能会不同。
例如程序会将其他表示行尾转为\n
用于文本文件 用于二进制文件
两种I\O级别
低级IO使用操作系统提供的基本IO服务
标准高级IO使用一个标准的C库函数包和stdio.h头文件中的定义。
三个标准文件
标准输入:通常为键盘
getchar(), gets(), scanf()
标准输出:通常为显示器
putchar(), puts(), printf()
标准错误输出:通常为显示器
标准IO
相对于低级IO优势:
1、 标准IO包中包含很多专用的函数,可以方便处理不同的IO问题;
2、 对输入和输出进行了缓冲,也就是说,大块地转移信息,而不是每次一个字节进行转移。
Exit()函数关闭所有打开的文件并终止程序。Exit()函数的参数会被传递给操作系统,以供其他程序使用。通常的约定是正常终止的程序传递值为0,非正常终止的程序传递非零值。
Return 0 等用于 exit(0),除非main()递归.
fopen()
fopen(地址, 模式)用来打开文件
fopen()函数的模式字符串
“r” 打开一个文本文件,可以读取文件
“w” 打开一个文本文件,可以写入文件,先将文件的长度截为零,如果该文件不存在则先创建
“a” 打开一个本文文件,可以写入文件,向已有文件的尾部追加内容,如果该文件不存在则先创建
“r+” 打开一个本文文件,可以进行更新,也即可以读取和写入文件
“w+” 打开一个本文文件,可以进行更新,也即可以读取和写入文件;如果该文件存在,则先将其长度截为零;如果不存在则先创建。
“a+” 打开一个本文文件,可以进行更新,也即可以读取和写入文件;如果该文件不存在则先创建可以读取整个文件,但写入时只能追加内容。
“rb”, “wb”, “ab”, “ab+”, “a+b”, “wb+”, “ab+”, “a+b” 与上述模式相似,只是使用二进制模式而非本文模式打开文件
成功打开文件后,fopen会返回一个文件指针;
不能打开文件,fopen会返回空指针
getc()与putc()
需要知道将要使用的文件
ch=getc(fp):从指针fp指定的文件中获得一个字符;
putc(ch, fpout):将字符ch写入到file指针fpout指定的文件中;
putc(ch, stdout):将字符ch输出到显示器,等同于putchar(ch);
类似地,getc(stdout)等同于getchar()
如果在尝试读入字符时发现已经达到文件结尾,getc()函数会返回一个特殊值EOF
eg:
int ch;
file *fp;
fp=fopen(“wacky.txt”,”r”);
while((ch=getc(fp)!=EOF)
{
putchar(ch);
}
fclose()
fclose(fp)函数关闭由指针fp指定的文件,同时根据需要刷新缓冲区,更正规的程序也许还要检查是否成功关闭了文件。如果成功关闭文件,fclose()函数将返回值0,否则返回eof。
if(fclose(fp)!=0)
printf(“error in closing file %s\n”, avg[1]);
标准文件指针
标准文件 文件指针 一般使用设备
标准输入 stdin 键盘
标准输出 stdout 显示器
标准错误 stderr 显示器
上述指针都是FILE指针类型
fgets(buf, MAX, fp)约等于gets(buf)
buf:用于存储输入的地址,这里为一个char数组;
MAX:表示输入字符串的最大长度;
fp:文件指针,指向要读取的文件。
fgets()在达到字符最大数目之前读完了一个整行,它将在字符串的空字符之前添加一个换行符以标识一行结束,这是和gets()函数的不同之处,gets()函数读取换行符后将其丢弃。
fgets()函数和gets()函数类似,遇到EOF的时候会返回NULL值,可以根据此检查文件结尾。否则,它返回传递给它的地址值。
Fputs()接受两个参数,一个字符串地址和一个文件指针,与puts()不同,fputs()打印时候不会添加一个换行符。
Fseek()定位到打开的文件的任意字节处
Ftell()以一个long类型值来返回一个文件的当前位置。