fopen文件权限设置难题:如何在Windows和Linux平台实现一致安全控制?

反激变压器设计学习笔记 反激变压器匝比感量设计 阅读详情

第一章:C 语言 fopen 函数文件权限设置

在使用 C 语言进行文件操作时,fopen 函数是最基础且广泛使用的接口之一。该函数不仅用于打开文件,还通过指定模式参数控制文件的访问权限和行为。理解这些模式对于正确读写文件至关重要。

文件打开模式详解

fopen 的第二个参数是模式字符串,决定了文件的打开方式和权限:
  • "r":只读模式,文件必须存在
  • "w":写入模式,若文件存在则清空,否则创建新文件
  • "a":追加模式,写操作始终在文件末尾进行
  • "r+":可读写模式,文件必须存在
  • "w+":可读写模式,若文件存在则清空内容
  • "a+":读和追加模式,写操作不会覆盖原有内容

代码示例与执行逻辑


#include <stdio.h>

int main() {
    FILE *fp = fopen("example.txt", "w"); // 以写入模式打开文件
    if (fp == NULL) {
        perror("文件打开失败");
        return 1;
    }
    fprintf(fp, "Hello, C File I/O!\n"); // 写入数据
    fclose(fp); // 关闭文件
    return 0;
}
上述代码尝试以写模式打开 example.txt。若文件不存在,则由系统自动创建;若已存在,则原内容被清空。使用 perror 可输出具体的错误原因,例如权限不足或路径无效。

常见模式对比表

模式能否读能否写文件不存在文件已存在
"r"是否失败保留内容
"w"否是创建清空
"a+"是是(仅追加)创建保留并追加
正确选择模式可避免数据丢失或权限错误,尤其是在多进程或服务环境下操作共享文件时尤为重要。

第二章:fopen 函数基础与跨平台行为解析

2.1 fopen 函数原型与模式参数详解

在 C 语言中,fopen 是文件操作的核心函数,用于打开指定路径的文件并返回指向 FILE 结构的指针。其函数原型定义如下:
FILE *fopen(const char *filename, const char *mode);
其中,filename 为文件路径名,mode 决定文件的访问模式。常见的模式包括:
  • "r":只读方式打开文本文件(文件必须存在)
  • "w":只写方式创建文件(若文件存在则清空内容)
  • "a":追加模式,写入内容始终位于文件末尾
  • "rb"、"wb":分别用于二进制文件的读写
模式参数行为对比
模式文件不存在文件存在读/写权限
r失败保留原内容只读
w创建清空内容只写
a创建保留原内容,只能追加写(追加)

2.2 Windows 与 Linux 下 fopen 的默认行为差异

在跨平台C/C++开发中,fopen函数的默认行为在Windows和Linux系统间存在关键差异,尤其体现在文本模式与二进制模式的处理上。
模式处理差异
Windows下,fopen以文本模式打开文件时会自动转换换行符:将\n写入时转为\r\n,读取\r\n时转为\n。而Linux不进行任何转换,所有字节原样读写。
FILE *fp = fopen("test.txt", "w");
fprintf(fp, "Hello\nWorld\n");
fclose(fp);
上述代码在Windows上生成的文件包含0D 0A(\r\n),而在Linux上仅为0A(\n)。
跨平台兼容建议
  • 若需一致行为,显式指定二进制模式:fopen("file", "wb")
  • 处理日志或网络协议数据时,应避免隐式换行转换导致的数据偏差
  • 使用#ifdef _WIN32条件编译应对平台差异

2.3 文件创建过程中的隐式权限机制分析

在Linux系统中,文件创建时的权限并非完全由用户指定,而是受到umask掩码和父目录默认ACL的双重影响。这一机制确保了基本的安全控制。
umask的作用机制
用户创建文件时,系统会根据当前umask值对初始权限进行过滤。例如:
umask 022
touch newfile.txt
# 实际权限为 644 (即 -rw-r--r--)
上述代码中,umask 022 屏蔽了组和其他用户的写权限。默认情况下,文件创建权限为666,目录为777,再通过按位取反与运算得出最终权限。
权限计算逻辑表
资源类型基础权限umask最终权限
普通文件666022644
目录777022755

2.4 umask 对 fopen 创建文件权限的影响实践

在 Unix/Linux 系统中,`umask` 是一个影响新创建文件默认权限的掩码值。当使用 C 标准库函数 `fopen` 创建文件时,其实际权限由传入的模式和系统 `umask` 共同决定。
umask 工作机制
`umask` 值会屏蔽文件权限中的对应位。例如,若 `umask` 为 `022`,则新建文件的写权限将从组和其他用户中移除。
fopen 权限计算示例

#include <stdio.h>
int main() {
    FILE *fp = fopen("testfile.txt", "w");
    if (fp) fclose(fp);
    return 0;
}
该代码调用 `fopen` 以写模式创建文件,底层等价于 `open()` 调用并传入权限 `0666`。最终文件权限为 `0666 & ~umask`。 若当前 `umask=022`,则实际权限为 `0644`(即 rw-r--r--)。
umask 值创建权限 (fopen)实际结果
02206660644
00206660664

2.5 跨平台 fopen 行为一致性测试用例设计

在跨平台开发中,`fopen` 函数在不同操作系统下的行为可能存在差异,尤其是在文件路径分隔符、换行符处理和权限模型上。为确保一致性,需设计系统化测试用例。
测试覆盖场景
  • 使用正斜杠(/)和反斜杠(\)路径打开文件
  • 测试 "r", "w", "a", "rb", "wb" 等模式在 Windows 与 Unix-like 系统中的行为
  • 验证不存在目录下创建文件的失败机制
示例测试代码

#include <stdio.h>
int main() {
    FILE *fp = fopen("test\\data.txt", "w"); // 混合路径测试
    if (fp) {
        fprintf(fp, "Hello\n");
        fclose(fp);
    }
    return 0;
}
该代码测试反斜杠路径在非 Windows 平台的兼容性。POSIX 系统通常接受混合分隔符,但部分旧版 libc 可能失败,需通过自动化脚本在多平台编译验证。
结果比对表
平台路径形式模式是否成功
Windows\\dir\\file.txtw是
Linux/dir/file.txtw是
macOSdir\file.txtw否

第三章:操作系统层面的文件权限模型对比

3.1 Linux 文件权限位与所有权机制剖析

Linux 文件系统通过权限位与所有权机制实现细粒度的访问控制。每个文件和目录都关联一个所有者(user)、所属组(group)以及其他用户(others)的三重权限结构。
权限位表示
文件权限以 10 个字符表示,如 -rwxr-xr--:
  • 首位表示文件类型(-为普通文件,d为目录)
  • 接下来三组三位分别代表用户、组、其他人的读(r)、写(w)、执行(x)权限
数字权限模式
权限也可用八进制表示:
符号二进制八进制
rwx1117
r-x1015
r--1004
chmod 754 script.sh
该命令将文件权限设为 rwxr-xr--,即所有者可读写执行,组用户可读执行,其他人仅可读。
所有权管理
使用 chown 修改文件所有者:
chown alice:developers project.log
此命令将文件所有者设为 alice,所属组设为 developers,确保团队协作中的权限合理分配。

3.2 Windows ACL 与安全描述符基本概念

Windows 安全模型的核心是安全描述符(Security Descriptor),它定义了对象的拥有者、主要组以及访问控制列表(ACL)。每个安全描述符包含两个关键的 ACL:DACL(自主访问控制列表)和 SACL(系统访问控制列表)。
安全描述符结构
  • Owner:标识对象的所有者 SID
  • Group:主要组 SID(较少使用)
  • DACL:决定谁可以访问对象及其权限级别
  • SACL:用于审计访问尝试
ACL 与 ACE 详解
DACL 由多个 ACE(访问控制项)组成,每个 ACE 指定一个 SID 的访问权限。例如:

// 示例:构建允许读取的 ACE
EXPLICIT_ACCESS ea;
ZeroMemory(&ea, sizeof(EXPLICIT_ACCESS));
ea.grfAccessPermissions = GENERIC_READ;
ea.grfAccessMode = SET_ACCESS;
ea.grfInheritance = NO_INHERITANCE;
ea.Trustee.pMultipleTrustee = NULL;
ea.Trustee.MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE;
ea.Trustee.TrusteeForm = TRUSTEE_IS_NAME;
ea.Trustee.TrusteeType = TRUSTEE_IS_USER;
ea.Trustee.ptstrName = L"DOMAIN\\User1";
该代码初始化一个显式访问结构,授予用户 `DOMAIN\User1` 读取权限。通过 `SetEntriesInAcl` 可将其转换为 ACL 并绑定到对象的安全描述符中,实现细粒度权限控制。

3.3 权限控制在 fopen 调用链中的实际作用点

权限控制在 fopen 的调用过程中并非在用户空间直接生效,而是在系统调用进入内核后的路径遍历和文件打开阶段由 VFS 层与具体文件系统协同完成。
关键检查点:inode 权限判定
当 fopen 触发 sys_open 系统调用后,内核在获取目标文件的 inode 时会执行权限校验。核心判断逻辑如下:

// 伪代码示意:inode 权限检查
if (inode->i_mode & S_IRWXU) {
    // 检查当前进程有效 UID 是否匹配所有者
    if (current->cred->uid == inode->i_uid)
        allow = 1;
}
// 或通过组、其他用户权限匹配
if (capable(CAP_DAC_OVERRIDE))
    allow = 1;  // 特权进程绕过检查
该检查依赖进程的凭证(cred)与 inode 中的访问控制位(i_mode)进行比对,并受 Linux 能力机制(如 CAP_DAC_OVERRIDE)影响。
权限决策流程
用户调用 fopen → libc 封装 open 系统调用 → 内核执行 path_lookup → inode permission check → 允许/拒绝

第四章:实现跨平台一致安全控制的策略与方案

4.1 使用 open/fchmod 组合替代 fopen 实现精细控制

在需要对文件权限进行精确管理的场景中,标准库函数 `fopen` 显得力不从心,因其无法在创建时指定文件权限位。而通过系统调用 `open` 配合 `fchmod`,可实现更细粒度的控制。
权限控制的局限性
`fopen` 创建文件时使用默认权限(通常受 umask 影响),难以满足安全要求较高的应用。例如,日志文件可能需设置为仅属主可写。
使用 open 与 fchmod 协同操作

int fd = open("secure.log", O_CREAT | O_WRONLY, S_IRUSR | S_IWUSR);
if (fd == -1) { /* 错误处理 */ }
fchmod(fd, S_IRUSR | S_IWUSR); // 显式设置权限
上述代码中,`open` 的第三个参数指定初始权限:`S_IRUSR` 允许属主读,`S_IWUSR` 允许属主写。随后调用 `fchmod` 可在文件打开后动态调整权限,避免权限过大风险。 该组合适用于需审计或高安全级别的文件操作,确保权限最小化原则得以贯彻。

4.2 封装跨平台文件操作接口的设计与实现

为统一不同操作系统间的文件处理逻辑,需抽象出一套与平台无关的文件操作接口。该接口应涵盖文件的创建、读取、写入、删除及路径解析等核心功能。
接口设计原则
  • 屏蔽底层差异,如 Windows 与 Unix 路径分隔符不同
  • 提供一致的错误码体系,便于上层处理异常
  • 支持同步与异步操作模式
核心方法定义(Go 示例)

type FileOpener interface {
    Open(path string) (File, error)        // 打开文件
    Create(path string) (File, error)      // 创建文件
    Remove(path string) error              // 删除文件
    Exists(path string) bool               // 判断文件是否存在
}
上述接口通过依赖注入方式适配不同平台的具体实现。例如,在 Windows 上使用 \ 解析路径,在 Linux 上自动转换为 /,确保调用方无需关心细节。
路径处理对照表
操作系统路径分隔符临时目录
Windows\C:\Temp
Linux//tmp
macOS//private/tmp

4.3 安全默认权限设置的最佳实践建议

在系统初始化阶段,应遵循最小权限原则,确保所有用户和服务账户默认仅拥有完成其任务所必需的最低权限。
避免使用宽泛权限
禁止默认赋予管理员或 root 权限。例如,在 Linux 系统中创建新用户时,应排除加入 sudo 组:
useradd -m -s /bin/bash -G developers appuser
该命令创建用户并指定主目录和登录 Shell,仅将其加入 developers 组,避免不必要的提权可能。
配置文件权限加固
关键配置文件应限制访问权限。推荐设置如下:
文件推荐权限说明
/etc/passwd644可读但不可写
/etc/shadow600仅 root 可读写

4.4 静态检查与运行时验证结合的权限保障机制

在现代系统安全架构中,单一的权限控制手段难以应对复杂威胁。通过将静态检查与运行时验证相结合,可实现多层次的权限保障。
静态检查:编译期权限校验
在代码构建阶段,利用注解或策略文件预定义访问规则。例如,在Go语言中通过结构体标签标记权限需求:

type UserService struct{}

// +permission=ADMIN
func (s *UserService) DeleteUser(id int) error {
    // 删除逻辑
    return nil
}
构建工具解析+permission标签,生成权限清单,提前发现越权调用。
运行时验证:动态访问控制
请求执行时,拦截器根据上下文(如用户角色、环境)比对权限清单与实际调用行为。不匹配则中断执行,记录审计日志。
  • 静态检查降低运行时开销
  • 运行时验证适应动态策略变更
  • 二者结合提升安全性与灵活性

第五章:总结与跨平台开发的安全演进方向

随着跨平台框架如 Flutter、React Native 和 Electron 的广泛应用,安全挑战日益复杂。开发者必须从代码层到部署链路全面构建防护机制。
统一安全策略的实施
现代跨平台应用常涉及多端数据同步,需在客户端与服务端间建立一致的身份验证机制。采用 OAuth 2.0 + OpenID Connect 可实现跨平台单点登录,同时通过 JWT 携带加密声明提升传输安全性。
敏感信息保护实践
避免将密钥硬编码在源码中,应使用环境变量或安全存储模块。例如,在 Flutter 中可通过 flutter_secure_storage 安全保存用户凭证:
// 使用 flutter_secure_storage 存储访问令牌
final storage = FlutterSecureStorage();
await storage.write(key: 'access_token', value: token);
// 后续读取自动隔离于系统安全区域
String? token = await storage.read(key: 'access_token');
构建时与运行时的双重校验
在 CI/CD 流程中集成静态分析工具(如 ESLint、Dart Analyzer)可提前发现潜在漏洞。同时,运行时应启用证书绑定(Certificate Pinning),防止中间人攻击。
平台推荐安全库典型应用场景
React Nativereact-native-keychain生物识别认证存储
Flutterflutter_secure_storageJWT 本地持久化
Electronkeytar桌面端密码管理
未来防护趋势:零信任架构集成
跨平台应用正逐步引入零信任模型,每次资源请求均需设备指纹、用户身份与行为模式的联合验证。结合 WebAssembly 提升核心逻辑执行安全,进一步降低逆向风险。
重头开始学ROS(8)---LVI-SAM复现与实机部署Ubuntu20.04以及如何适配6轴imu 本文详细记录了在Ubuntu20.04环境下复现LVI-SLAM系统的过程,主要包含四个部分:源码编译、问题解决、数据录制和6轴IMU适配。在编译过程中遇到GTSAM、PCL版本、OpenCV路径等典型问题并给出解决方案;详细说明了ROS bag包的录制规范;针对6轴IMU硬件限制,提供了核心代码修改方案。文章为LVI-SLAM系统在非标准环境下的部署提供了实用参考,特别适合需要适配不同硬件配置的研究者。 阅读详情

相关推荐

L2-028 秀恩爱分得快(测试点3说明)

古人云:秀恩爱,分得快。互联网上每天都有大量人发布大量照片,我们通过分析这些照片,可以分析人与人之间的亲密度。如果一张照片上出现了 K 个人,这些人两两间的亲密度就被定义为 1/K。任意两个人如果同时出现在若干张照片里,他们之间的亲密度就是所有这些同框照片对应的亲密度之和。下面给定一批照片,请你分析一对给定的情侣,看看他们分别有没有亲密度更高的异性朋友?

daybreak_alonely的博客 1413

Windows下C语言中用fopen函数打开带有中文的路径的文件

Windows下C语言中用fopen函数打开带有中文的路径的文件

m0_60793758的博客 4880

Orange Pi 3B+刷入EmuELEC全过程:手把手教程

手把手教你如何在Orange Pi 3B+上成功刷入emuelec系统,涵盖烧录工具、镜像下载到启动设置的完整流程,让复古游戏体验轻松实现。

weixin_35732273的博客 1096

windows 下 fopen ,fopen_s,_fsopen

fopen ,fopen_s,_fsopen

zy710109413的博客 849

从零到一:基于Docker与Gewechat协议,打造高可用微信AI助手

本文提供了一份从零开始的实战指南,详细讲解如何利用Docker容器化技术与Gewechat协议,构建一个高可用、低风险的微信AI助手。通过整合Dify AI平台,您可以为微信机器人注入大语言模型的智能,实现自动问答、知识库查询等高级功能,显著提升个人或团队在微信场景下的沟通与信息处理效率。

weixin_29280657的博客 160

STM32F407驱动OV2640摄像头:从SCCB协议到I2C模拟的保姆级避坑指南

本文详细介绍了STM32F407驱动OV2640摄像头的完整流程,重点解析SCCB协议与I2C的关键差异,并提供GPIO模拟实现方案。通过实战案例和调试技巧,帮助开发者避开常见陷阱,实现稳定的图像采集功能。

weixin_28700411的博客 346

Windows/Linux上使用fopen相关函数读取大文件

在介绍读取大文件之前,先了解下<cstdint>文件,标准头文件,存放固定宽度整数类型,如int32_t, uint32_t,不管在32位上还是64位上,长度都为4个字节;int64_t, uint64_t,不管在32位上还是64位上,长度都为4个字节。对于int,无论在32位上还是在64位上,长度都为4个字节。 对于long, long long, size_t类型,在windows和linux上会有所不同。以下是汇总: 使用fopen读取大文件相关函数声明如下:注意它们的参数类型和返

网络资源是无限的 4018

几款常见存储系统的对比分析

如何对比选择存储系统?本文给你答案!本文将详细对比NetApp、Lsilon、Vast Data、DDN lustre和WekaFS的五个存储系统的简单性、速度、规模及标准。

hongcloudtech的博客 1679

【C】文件操作(fopen等函数)

磁盘上的文件是文件。就比方说我们C盘和D盘中的文件,后缀为.png的图片文件,后缀为.exe的等等。但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件(从文件功能的角度来分类的)。

You don't have the guts to be what you wanna be. 1万+

告别CANoe?手把手教你用Python+PCAN搭建汽车诊断脚本(附完整代码)

本文详细介绍了如何利用Python和PCAN硬件搭建高性价比的汽车诊断自动化方案,替代昂贵的CANoe工具。通过开源库python-can和udsoncan实现UDS诊断协议,涵盖硬件选择、环境配置、核心功能实现及性能优化,附完整代码示例,助力开发者快速构建诊断脚本。

weixin_42551227的博客 373

国科大学习资料--图像处理(彭思龙、杨戈)--2020年期末考试题解析(学长整理分析)

在对20年卷子分析前,先看看19年卷子的解析(后面有20年的变化,由于从核心课调整到了普及课,20年的卷子相对简单,但是还是有很多细节) 解析:(字写的不好别嫌弃!!!!) 20年的卷子 第一题:和19年基本一致,但是加了高斯核计算费用,要算一个节省计算成本比率,所以去多看看PPT 第二题:和19年基本一致,加了证明两个高斯卷积仍然是高斯卷积,相当于19年题2和3结合 第三题:采样定理,和19年基本一致,但要注意加了证明 第四题:考了形态学提取图像边界 第五题:直方图,和19年一

无名何许人的博客 4364

windows下fopen注意点 + VS下打开文件写点东西到文件

文章目录windows下fopen注意点fopen': This function or variable may be unsafe. Consider using fwindows文件必须要用/,不能是windows默认的反斜杠a windows下fopen注意点 fopen’: This function or variable may be unsafe. Consider using f 加上这个就好 #pragma warning(disable:4996) windows文件必须要用/,不能是

fgh123的博客 2305

从生产订单到整车交付,SAP 离散制造在汽车行业里的真实落点

汽车行业谈数字化,很容易一上来就谈智能工厂、数字孪生、AI 排产、无人仓、视觉质检。可落到 SAP 项目现场,真正把工厂撑起来的,往往还是几个很朴素的问题,客户订单来了以后,BOM 能不能准确展开,物料能不能准时到线,产能有没有被过度承诺,生产订单能不能被车间正确执行,质量问题能不能追溯,成本能不能按工单和批次沉淀下来。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 114

文件上传漏洞实战:从基础绕过到高级防御的upload-labs通关指南

文件上传是Web应用中的常见功能,也是安全漏洞的高发区。其核心原理在于服务器对用户上传的文件未进行充分校验,导致恶意文件被上传并执行。从技术价值看,深入理解文件上传漏洞的成因与绕过手法,是构建安全应用和进行渗透测试的必备技能。常见的应用场景包括网站头像上传、文档分享、资源管理等。本文以经典的upload-labs靶场为例,系统解析了从**前端JavaScript校验绕过**、**MIME类型伪造**,到服务端**黑名单/白名单绕过**、**%00截断**、**条件竞争**及**二次渲染绕过**等核心漏洞类型

优快云头条 598

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

windows fopen 中文路径失败问题之解决

使用 _wfopen。

sz76211822的专栏 460

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

菜鸟教程:fopen()、fwrite()、fread()、fseek()、flcose()

标准IO函数。

qq_48087696的博客 1800

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Windows下fopen,fclose

Fopen(),fclose()在头文件#include &lt;stdio.h&gt;fopen()用来以指定的方式打开文件,其原型为:    FILE * fopen(const char * path, const char * mode);//【参数】path为包含了路径的文件名,mode为文件打开方式。例如:FILE *fp;if((fp=fopen("D:\\a.txt","r"))=...

observadores的博客 2984

Windows fopen创建的文件名中文乱码

windows下使用fopen创建文件后发现文件名中文乱码,文件名是其他服务传来的的。原因是windows使用的是GBK字符集,而创建时传入的文件名是utf-8,需要将utf-8转gbk,转换方法见Linux和Windows上汉字的编码转换实现_Heworld的博客-优快云博客 ...

Heworld的博客 1640

windows系统下C语言fopen打开文件路径介绍

打开当前工程所在文件夹的上一级目录中的MakeData文件夹中的data.txt文件的四种方法: 1:FILE *fp_unsort_file = fopen("..\\MakeData\\data.txt","r"); 2:FILE *fp_unsort_file = fopen("..\\MakeData/data.txt","r"); 3:FILE *fp_unsort_file = ...

dashao598的专栏 2万+

windows 和linux下的fopen()的区别

fopen是C库函数里面的一个函数。打开系统位置中的某文件。 windows: FILE *fp = fopen("D:\\quick_sort.c", "r"); linux: FILE *fp = fopen("/home/quick_sort.c", "r"); 关闭都是: fclose(fp);

nemo2011的专栏 2091

C/C++文件输入输出操作——FILE*、fstream、windowsAPI

<br />基于C的文件操作<br />在ANSI C中,对文件的操作分为两种方式,即流式文件操作和I/O文件操作,下面就分别介绍之。<br />一、流式文件操作<br />这种方式的文件操作有一个重要的结构FILE,FILE在头文件stdio.h中定义如下:<br />typedef struct {<br />int level; /* fill/empty level of buffer */<br />unsigned flags; /* File status flags */<br />char

long458的专栏 3828

Linux 和 Windows 中 fopen 打开方式的区别

The mode string can also include the letter 'b' either as a last character or as a character between the characters in any of the two-character strings described above.  This is strictly for compati

码农 3678

fopen文本模式和ftell,fseek的跨平台问题探讨

当我们使用文本方式打开一个文本文件读取时,就不应该再使用ftell, fseek函数,因为这2个函数只适合于二进制模式 ,在文本模式下会因为系统的不同而产生不同的结果。 典型的文本方式打开比如:       FILE *fp = fopen("test.txt", "r")

每天进步一点点就好 4042

fopen /open区别

此文为鄙人转载,原文参考http://blog.chinaunix.net/uid-21783276-id-2689043.html UNIX环境下的C 对二进制流文件的读写有两套班子:1) fopen,fread,fwrite ; 2) open, read, write 这里简单的介绍一下他们的区别。 1. fopen 系列是标准的C库函数;open系列是 POSIX 定义的,是U

菜鸟的专栏 933

(转)windows下fopen遇到文件限制的解决方法

转自:http://blog.youkuaiyun.com/joyyoj/article/details/5447150 昨天遇到一个问题:打开shp文件到85个时,发现再添加shp就会报错。我一开始怀疑是缓存写的有问题,后来跟踪了下,才发现问题居然在fopen,又测试下一把fopen,如果fopen读取txt,发现在读取第510个文件时就会失败。于是怀疑是文件打开数目有限制,搜索了一把,更

==.== 2514

fopen

定义函数FILE * fopen(const char * path,const char * mode);函数说明 参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态。 mode有下列几种形态字符串:r 打开只读文件,该文件必须存在。 r+ 打开可读写的文件,该文件必须存在。 rb 打开一个二进制文件,只读。 rb+ 以读/写方式打开一个二进制文件。

全网同名,欢迎关注。 6870
上一篇: GitHub高星项目贡献指南,教你精准提交PR并主导Issue讨论
下一篇: C语言递归栈溢出紧急应对,5分钟快速定位并修复问题(一线专家经验)
simcode
博客等级 码龄14年 154粉丝 2026原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值