C语言文件读取那些事(open,fopen等函数深层理解)
C语言文件读取操作特别是在linux内核嵌入式开发中使用的较为频繁。文件读取示例代码语言javascriptAI代码解释文件读取操作 char buf[100] {0}; fd open(xxx.c); // fd接受返回值,-1为错误 char writebuf[20] I love; // 读取文件到buf数组中长度为10个 ret read(fd, buf, 10); // 写入数据 ret write(fd, writebuf, strlen(writebuf)); close(fd);C语言中文件操作为打开open操作write,关闭close区别于python等语言缺少关闭操作但同时有保存操作。为什么需要关闭函数文件操作是在电脑内存中进行区别于外存--硬盘文件在内存中操作后还需要保存在外存上。所以每次写文档时需要注意要时刻保存文档Ctrls因为文件内容当前在内存中没有外存在外存中。为什么电脑不能写一个数据就自动保存呢主要原因还是频繁的写入数据到外存中将加快硬盘的损坏。关闭函数其实就是告诉电脑在内存中的内容已经写好需要保存到硬盘上了。打开函数代码语言javascriptAI代码解释open(xxx,O_TRUNC) //文件中原有内容清空 open(xxx,O_APPEND) //写到内容的后面 open(xxx,O_CREAT) //创建一个不存在的文件并打开如果以前存在则会删除老文件在创建同名文件 open(xxx,O_CREAT | O_EXCL, 0666) //不存在文件进行创建存在文件时进行报错(0666目的是使文件可读可写) 其中 O_NONBLOCK //非阻塞模式打开文件如果不能立马执行则立刻退回默认是阻塞模式文件一定被打开但时间没保证 // 应用于硬件打开设备文件不用于普通文件 O_SYNC //没有O_SYNC时write写入的内容只是在底层的缓冲区之后一起存放在硬件中有些时候文件非常重要需要直接写入硬件中lseek函数确定当前所属文件位置代码语言javascriptAI代码解释#include stdio.h #include sys/types.h #include sys/stat.h #include fcntl.h #include unistd.h #include string.h int cal_len(const char *pathname) { int fd -1; // fd 就是file descriptor文件描述符 int ret -1; // 第一步打开文件 #if 1 fd open(pathname, O_RDONLY); if (-1 fd) // 有时候也写成 (fd 0) { //printf(\n); perror(文件打开错误); // return -1; return -1; } #endif // 此时文件指针指向文件开头 // 我们用lseek将文件指针移动到末尾然后返回值就是文件指针距离文件开头的偏移量也就是文件的长度了 ret lseek(fd, 0, SEEK_END); return ret; } int main(int argc, char *argv[]) { int fd -1; // fd 就是file descriptor文件描述符 int ret -1; if (argc ! 2) { printf(usage: %s filename\n, argv[0]); _exit(-1); } printf(文件长度是%d字节\n, cal_len(argv[1])); return 0; }其中#if 1 ...... #endif代表运行....中的内容数字改为0时表示不运行多进程打开文件open函数其实是有返回值的返回值一般为0,12,3...。其中0,12被系统默认使用分别应用于标准输入输出错误---当程序报错时就是在标准输出中返回内容代码语言javascriptAI代码解释fd open(xxx); //fd就是open函数的返回值一般从3开始当多个open函数打开同一个文档时不同open对应一个返回值---虽然打开的是同一个文档。

相关新闻

Qwen3-ASR-1.7B保姆级教学:解决‘识别不准’‘无法访问’等高频问题

Qwen3-ASR-1.7B保姆级教学:解决‘识别不准’‘无法访问’等高频问题

Qwen3-ASR-1.7B保姆级教学:解决‘识别不准’‘无法访问’等高频问题 语音识别不准?服务无法访问?别担心,这篇教程手把手教你搞定Qwen3-ASR-1.7B的各种常见问题 你是不是也遇到过这种情况:上传了一段清晰的语音&#xf…

2026/7/5 12:40:35 阅读更多 →
Qwen3-Reranker-0.6B行业案例:电商商品搜索排序实战

Qwen3-Reranker-0.6B行业案例:电商商品搜索排序实战

Qwen3-Reranker-0.6B行业案例:电商商品搜索排序实战 1. 引言 电商平台每天面临海量商品搜索请求,用户输入"轻薄笔记本电脑"时,系统需要从数百万商品中快速找到最相关的结果。传统搜索往往依赖关键词匹配,容易陷入&quo…

2026/7/5 3:45:31 阅读更多 →
AI 辅助开发实战:高效生成‘计算机毕设勤工助学管理系统’开题报告的技术路径

AI 辅助开发实战:高效生成‘计算机毕设勤工助学管理系统’开题报告的技术路径

最近在帮学弟学妹看计算机毕设的开题报告,发现一个普遍现象:大家一提到“勤工助学管理系统”,思路就容易卡壳。要么是需求写得像产品说明书,要么是技术栈罗列了一堆却说不清为什么选。其实,借助现在的AI工具&#xff0…

2026/5/17 10:02:06 阅读更多 →

最新新闻

Paperxie 毕业论文智能写作|一站式搞定本科硕博毕业论文,告别熬夜卡文瓶颈

Paperxie 毕业论文智能写作|一站式搞定本科硕博毕业论文,告别熬夜卡文瓶颈

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/科研绘图毕业论文 - PaperXie智能写作PaperXieAi论文智能生成软件,10分钟生成万字毕业论文、期刊论文、文献综述、PPT,Aigc查重、降重报告、文献资料。只需一个标题,从开…

2026/7/6 20:17:30 阅读更多 →
高级iOS小组件开发实战:深度解析Mastodon WidgetKit架构设计

高级iOS小组件开发实战:深度解析Mastodon WidgetKit架构设计

高级iOS小组件开发实战:深度解析Mastodon WidgetKit架构设计 【免费下载链接】mastodon-ios Official iOS app for Mastodon 项目地址: https://gitcode.com/gh_mirrors/ma/mastodon-ios Mastodon iOS应用通过WidgetKit框架实现了专业级的小组件系统&#xf…

2026/7/6 20:15:28 阅读更多 →
Gas Town常见错误及解决方案:5个新手必知的避坑指南

Gas Town常见错误及解决方案:5个新手必知的避坑指南

Gas Town常见错误及解决方案:5个新手必知的避坑指南 【免费下载链接】gastown Gas Town - multi-agent workspace manager 项目地址: https://gitcode.com/GitHub_Trending/ga/gastown Gas Town 作为一款多代理工作区管理器(multi-agent workspac…

2026/7/6 20:11:26 阅读更多 →
Gas Town模型评估功能:如何客观比较不同AI模型的工作表现

Gas Town模型评估功能:如何客观比较不同AI模型的工作表现

Gas Town模型评估功能:如何客观比较不同AI模型的工作表现 【免费下载链接】gastown Gas Town - multi-agent workspace manager 项目地址: https://gitcode.com/GitHub_Trending/ga/gastown 在人工智能快速发展的今天,选择合适的AI模型变得越来越…

2026/7/6 20:11:26 阅读更多 →
ts-graphql-plugin核心功能解析:从自动补全到类型生成的完整攻略

ts-graphql-plugin核心功能解析:从自动补全到类型生成的完整攻略

ts-graphql-plugin核心功能解析:从自动补全到类型生成的完整攻略 【免费下载链接】ts-graphql-plugin TypeScript Language Service Plugin for GraphQL developers 项目地址: https://gitcode.com/gh_mirrors/ts/ts-graphql-plugin ts-graphql-plugin是一款…

2026/7/6 20:11:26 阅读更多 →
Balena Etcher终极指南:三步轻松制作系统启动盘的完整教程

Balena Etcher终极指南:三步轻松制作系统启动盘的完整教程

Balena Etcher终极指南:三步轻松制作系统启动盘的完整教程 【免费下载链接】etcher Flash OS images to SD cards & USB drives, safely and easily. 项目地址: https://gitcode.com/GitHub_Trending/et/etcher Balena Etcher是一款功能强大、安全可靠的…

2026/7/6 20:07:24 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性:5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域,单元测试是保证代码质量的重要环节。当应用涉及数据库操作时,测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻