当前位置: 首页 > web >正文

标准IO实现

1. 创建并打开文件

fopen 用于打开或创建文件,返回一个文件流指针 FILE *

int main()
{FILE *fp = fopen("./1.txt","w");if(NULL == fp){printf("fopen error\n");return -1;}printf("fopen success\n");fclose(fp);return 0;
}

说明:

  "w" 模式:如果文件存在则清空,不存在则创建

        打开失败 fopen 返回 NULL(可能是路径不存在或权限不足)

        文件使用完后必须 fclose

2. 写入字符串(逐字符写入)

int main()
{FILE *fp = fopen("./1.txt","w");if(NULL == fp){printf("fopen error\n");return -1;}printf("fopen success\n");char c[] = "Hello World";char *pstr = "Hello World";int len = strlen(c);int i;for(i = 0;i < len;++i){fputc(*(pstr + i),fp);}fclose(fp);return 0;
}

3. 逐字符读取文件

int main()
{FILE *fp = fopen("./2.txt","r");if(NULL == fp){printf("error\n");return -1;}int ret = fgetc(fp);if(EOF == ret){printf("end of file or error\n");return -1;}while(ret != EOF){printf("%c",ret);ret = fgetc(fp); }puts("");return 0;
}

4. 按行读取文件(fgets)

int main(int argc,const char *argv[])
{if(2 != argc){printf("Usage : ./a.out <srcfile>\n");return -1;}FILE *fp = fopen(argv[1],"r");if(NULL == fp){printf("fopen error \n");return -1;}char s[100] = {0};char *p = NULL;while(1){p = fgets(s,sizeof(s),fp);if(NULL == p){break;}printf("%s",s);}printf("\n");fclose(fp);return 0;
}

说明:

  fgets:读取一行数据(包含换行符 \n

     适合按行读取文本

      文件参数:缓冲区 缓冲区大小 sizeof(s) 文件流指针 fp

5. 直接写入字符串(fputs)

int main(int argc, const char *argv[])
{FILE *fp = fopen("1.txt", "w");if (NULL == fp){printf("fopen error\n");return -1;}fputs("hello world", fp);char str[32] = {"how are you"};fputs(str, fp);char *pstr = "hello world";fputs(pstr, fp);fclose(fp);return 0;
}

说明:

  fputs:直接写入一个字符串(不自动添加换行符)

  适合快速写入字符串数据

http://www.xdnf.cn/news/17537.html

相关文章:

  • Effective C++ 条款32:确定你的public继承塑模出 is-a 关系
  • AWT 基本组件深入浅出:Button/Label/TextField/Checkbox/Choice/List 全面实战与性能优化
  • 2025-08-09 李沐深度学习14——经典卷积神经网络 (2)
  • MySQL相关概念和易错知识点(4)(分组查询、连接查询、合并查询、子查询)
  • Mysql笔记-系统变量\用户变量管理
  • 【LLM实战|langchain】langchain基础
  • toRef和toRefs
  • 智慧城管复杂人流场景下识别准确率↑32%:陌讯多模态感知引擎实战解析
  • Easysearch 冷热架构实战
  • Linux下管道的实现
  • SpringBoot 集成 MapStruct
  • 《从零实现哈希表:详解设计、冲突解决与优化》
  • [激光原理与应用-197]:光学器件 - 图解双折射晶体的工作原理
  • Aurora接口FPGA设计
  • C# 异步编程(使用异步Lambda表达式)
  • pdf预览Vue-PDF-Embed
  • C++ 类模板
  • Android MVP架构详解:从理论到实践
  • [优选算法专题一双指针——四数之和]
  • 大语言模型概述
  • 【后端】Java Stream API 介绍
  • Java -- 日期类-第一代-第二代-第三代日期
  • Datawhale AI夏令营第三期,多模态RAG方向 Task2
  • QT环境搭建
  • 下肢康复机器人机械结构设计cad【6张】三维图+设计说明说书
  • 【数据结构入门】栈和队列
  • 用天气预测理解分类算法-从出门看天气到逻辑回归
  • LeetCode111~130题解
  • Nginx 性能优化与动态内容处理
  • linux 操作ppt