标准I/O操作函数
  TEZNKK3IfmPf 2023年11月14日 27 0


从文件编码方式看,分文本文件和二进制文件.

文本文件操作:

1.文件打开函数fopen():原型是


FILE *fopen(const char *path,const char *mode);

path --表示文件名和路径名,可以是绝对路径,也可以是相对路径。

比如:fp=fopen("/tmp/file","r+");
fp=fopen("./../file","w+");

mode--打开方式.由r(read),w(write),a(append),t(text),b(banary),+六个字符组成

对于UNIX系统,t和b没有区分,用那个都一样,也可以不写其他的有6中组合

“r”=只读,文件必须存在;

“w”=只写,若文件不存在则创建之,已存在则清空内容再写;

"a"=只能追加数据,文件不存在就创建之;

"r+"=允许读和写,文件必须存在;

"w+"=读和写,文件不存在则创建,存在就清空再写;

"a+"=读和追加数据,文件不存在就创建;

打开如果出错,fopen 将返回一个空指针值 NULL,注意要加打开是否成功判断。


if((fp=fopen("../file","r"))==NULL)
{
perror("failed to open ../file");
exit(1);
}

fopen里的所谓当前目录是指:进程工作时的目录

2.文件关闭函数fclose()

文件使用完,最好是要关闭,原型是


int fclose(FILE *fp);

fclose与fopen配对调用。

3.出错处理函数perror()

C标准库和UNIX  C库的很多系统函数在错误返回时将错误原因记录在一个全局变量errno中,一般用函数perror()将errno解释成字符串输出。原型:

 

void perror(const char *s);


每次调用系统函数错误返回后,要马上检查错误原因,perror()只处理最近一次错误产生的errno.

4.字符读写函数fgetc()/fputc() 原型:


int fgetc(FILE *stream);
int fputc(int c,FILE *stream);

在fgetc函数中,文件必须是可读的。fgetc返回的是一个字符(char型)。每读一个字符,自动向后移动一个字节。但申明的是int,这是指该字符的ASCII码。

fputc输入的也是字符c的ASCII码。

5.字符串读写函数fgets()/fputs() 原型:



char *fgets(char *s,int size,FILE *stream);
int fputs(const char*s,FILE *stream);

fgets中, s是缓冲区首地址,size是缓冲区长度,fgets从stream中一次最多读取以'\n'结尾的一行到s中。并且在末尾自动添加一个'\0';

fputs中,s是以'\0'结尾的字符串,fputs将该字符串写入文件stream,但并不写入结尾的'\0'.fputs不需要以'\n'结尾。

/***************************************
2 *复制文本文件file1的内容到file2
3 * 2009.3.25 leon
4 **************************************/
5 #include<stdio.h>
6 #include<stdlib.h>
7 #include<errno.h>
8
9 int main(void)
10 {
11 FILE *fp1,*fp2;
12 char ss[512];
13
14 if((fp1=fopen("file1","r"))==NULL){
15 perror("fail to open file1");
16 exit(1);
17 }
18
19 if((fp2=fopen("file2","a+"))==NULL){
20 perror("fail to open file2");
21 exit(1);
22 }
23
24 for(;fgets(ss,10,fp1)!=NULL;)
25 fputs(ss,fp2);
26
27 fclose(fp1);
28 fclose(fp2);
29
30 return 0;
31 }

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月14日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2023年11月15日   33   0   0 c语言函数
  TEZNKK3IfmPf   2023年11月15日   43   0   0 函数
  TEZNKK3IfmPf   2023年11月14日   27   0   0 函数
  TEZNKK3IfmPf   2023年11月14日   27   0   0 C++函数
  TEZNKK3IfmPf   2023年11月15日   48   0   0 函数语法
  TEZNKK3IfmPf   2023年11月14日   17   0   0 react函数
  TEZNKK3IfmPf   2024年03月29日   63   0   0 函数
  TEZNKK3IfmPf   2023年11月14日   20   0   0 C++函数
  TEZNKK3IfmPf   2023年11月14日   27   0   0 缓存函数
  TEZNKK3IfmPf   2023年11月15日   42   0   0 c语言函数
TEZNKK3IfmPf