栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Linux标准IO相关库函数和‘‘流‘‘

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Linux标准IO相关库函数和‘‘流‘‘

fopen()/fclose() ---->打开/关闭文件

fgetc()/fputc() ---->按字节读写文件

fgets()/fputs() ---->按行读写文件

fread()/fwrite() ---->按对象读写文件

ftell()/fseek()/rewind()/ ---->定位文件

fflush() ---->刷新流(强制刷新缓冲区)

feof() ---->判断错误流

相关手册的查找:

man手册:

man 1:shell指令和可执行程序

man2:系统调用函数

man3:标准库函数

1.fopen()

#include 
FILE *fopen(const char *pathname,const char *mode);
参数:
    pathname:打开文件的文件名(包含路径)
    mode:打开文件的方式
    	r:以只读的方式打开文件,文件必须要存在
        r+:以读写方式打开,文件必须要存在
        w:以只写方式打开文件,如果文件不存在,则会创建再打开
		w+:以读写方式打开文件,如果文件不存在,则会创建再打开
        a:以只写方式打开文件,如果文件不存在,则会创建再打开
        a+:以读写方式打开文件,如果文件不存在,则会创建再打开
    返回值:
    成功返回对应的文件的流1指针,失败返回NULL,并设置错误号(errno)
    errno:当前系统中最后一个错误的编号
---------------------------------------------------------
     #include 
			char *strerror(int errnum);
			参数:
                errnum:错误号
			返回值:
                成功返回错误原因
--------------------------------------------------------          
       #include 

       void perror(const char *s);
		参数:
            s:提示信息
		

eg:

#include 
#include 
#include 

int main(int argc, char *argv[])
{ 
    FILE *fp = fopen("1.txt","r");
    if(NULL == fp)
    {
        //printf("errno=%d :%sn",errno,strerror(errno));
        perror("open 1.txt");
        return -1;
    }
    printf("stdin_num:%dn",stdin->_fileno);//标准输入流 ---->stdin ----->键盘
    printf("stdout_num:%dn",stdout->_fileno);//标准输出流 ---->stdout ----->终端
    printf("stderr_num:%dn",stderr->_fileno);//标准错误流 ---->stderr
    printf("file_num:%dn",fp->_fileno);//本文件流
    printf("size=%ldn",stdout->_IO_buf_end-stdout->_IO_buf_base);//末尾buf-起始buf-->空间的总字节
    printf("open successfullyn");
    fclose(fp);
    return 0;
} 

终端演示:

2、fclose()

#include 

int fclose(FILE *stream);
参数:
    stream:关闭文件对应的流指针
返回值
    成功返回0;失败返回EOF(宏定义了-1)

3、按字节读写—fgetc/fputc

```bash
#include 
int fgetc(FILE *stream);
	参数:stream-->流指针
    返回值:
        成功返回读取的字符,失败返回-1;
        读到文件末尾也会返回-1;
-------------------------------------------------------------------------------------------
#include 

       int fputc(int c, FILE *stream);
	参数:
        stream-->流指针
    返回值:
        成功返回写入的字符,失败返回-1;

eg:

#include 

int main(int argc, char *argv[])
{ 
    FILE *fp = fopen("1.txt","r+");
    if(NULL==fp)
    {
        perror("open 1.txt");
        return -1;
    }
    char ch=fgetc(fp);
    printf("ch=%cn",ch);
    return 0;
} 
---------------------------------------------------------------------------------------
#include 

int main(int argc, char *argv[])
{ 
    FILE *fp = fopen("2.txt","w+");
    if(NULL==fp)
    {
        perror("fopen");
        return -1;
    }
    char ch = fgetc(stdin);
    int ret = fputc(ch,fp);
    if(ret<0)
    {
        perror("fputc");
        return -1;
    }
    return 0;
} 

```bash
4、按行读写---fgets()/fputs()

#include 
       char *fgets(char *s, int size, FILE *stream);
	参数:
        s:字符串首地址
        size:字符串读取的最大长度
        stream:流指针
    返回值:成功返回字符串的首地址,失败返回NULL;
            
    注:
      1.当读取内容遇到换行符,读取内容结束
      2.n换行符也会一起读进去存起来      
      3.最大读取内容为size-1个      
-----------------------------------------------------------------------------------
int fputs(const char *s, FILE *stream);
	参数:
        s:写入字符串的首地址
		stream:流指针
	返回值:失败返回-1
#include 

int main(int argc, char *argv[])
{ 
    FILE *fp=fopen("1.txt","r+");
    if(NULL==fp)
    {
        perror("fopen");
        return -1;
    }
    char buf[64]={0};
    fgets(buf,64,stdin);
    printf("%sn",buf);
    return 0;
} 
#include 

int main(int argc, char *argv[])
{ 
    FILE *fp=fopen("1.txt","a+");
    if(NULL==fp)
    {
        perror("open");
        return -1;
    }
    char buf[64]={0};
    fgets(buf,64,stdin);
    int ret=fputs(buf,fp);
    if(ret<0)
    {
        printf("fputs");
        return -1;
    }
    return 0;
} 

fgets代码终端显示:
输入:

fputs代码终端显示:

1.txt:

运行程序后的1.txt:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1035810.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号