首页
学习
活动
专区
圈层
工具
发布

确定不进来看看吗?详细讲解C语言文件操作(示例分析每个函数)

这就是我们下面要讲解的文件的打开和关闭内容. 我们在使用文件时,要先将这个文件打开,并且结束后将文件关闭....(不存在) “r”(只读) 为了输入数据,打开一个已经存在的文本文件 出错 “w”(只写) 为了输出数据,打开一个文本文件 建立一个新的文件 “a”(追加) 向文本文件尾添加数据 建立一个新的文件 “rb...注意: 该函数时按行进行写入字符串.可以在写数据时在后面增加一个换行符,会更加美观....: 读到的数据: 解释: fgets(str[0], 55, pFile);从文件第一行开始向后读取54个字符,但是还没有到54个字符时,先遇到了换行符,它使 fgets 停止读取,但它被函数视为有效字符...(pf,"%d",a);//文本的形式写到文件中 fclose(pf); pf = NULL; return 0; } 运行结果: 一般以文本文件的方式去写,会占用更多的字节空间,因为对于每一位数字都要单独转化为

99220

从“文件小白“到“IO大侠“:C语言文件操作全攻略

如果要求在外存上以ASCII码的形式存储,则需要在存储前转换。以ASCII字符的形式存储的文件就是文本文件。 ⼀个数据在文件中是怎么存储的呢?...如果序列后面有其他字符,则行为取决于库实现:一些实现可能会忽略其他字符,例如,接受额外的“t”(有时用于显式表示文本文件)。 在某些库实现中,使用更新模式打开或创建文本文件可能会视为二进制文件。...2、文件的关闭 与动态开辟内存空间时一样,当我们打开文件时,会在内存中开辟一块空间,如果我们打开该文件后不关闭,那么这个空间会一直存在,一直占用那块内存空间,所以当我们对一个文件的操作结束时,一定要记住将该文件关闭...、避坑指南 模式选择:随机读写必须用"r+"、"w+"或"a+"模式 文本文件陷阱:在Windows中,文本模式的\n会被转换为\r\n,影响偏移量计算 越界检查:跳转时确保offset不超过文件大小(.../二进制模式差异,规避跨平台兼容性问题 记住,优秀的程序员不仅要让代码"能工作",更要让程序"工作得好"。

40110
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【C语言题解】三题:回文检查、刘备 关羽 张飞三人过年放鞭炮、约瑟夫环问题(犹太人死亡游戏)(难度up,推荐)

    题目一:回文检查 ​ 根据题目要求,我们可以知道要输入一个完整的英文句子,其中包括空格 这里我们就要注意了,在scanf 中使用%s来输入字符串时,它会从第一个非空白字符开始读取,直到遇到空白字符就停止读取...这里我想到的是可以利用ASCII码表,根据不同字符的ASCII码值的不同,我们将每一个字符进行条件判断 如果它在英文大写字母A~Z之间或英文小写字母 a~z之间,那么就留下; 否则就不是字母即为空格或其他符号...{ printf("NO\n"); } return 0; } 题目二:刘备、关羽、张飞过年放鞭炮 ​ 根据规律可以发现有n个鞭炮时,刘备放炮的时间点在n,关羽的在2n-1,...张飞的在3n-2。...在循环里,即游戏进行中 ,大家都在报数时, 只有活人才报数,死人不报数(诈尸也不行哈哈)。每次报数从1~m,喊到m的人死,活人数量就减减。下一个活人报数就又从1开始喊。

    35410

    gets 、getchar 、fgets 、scanf的用法

    ,但不接收’\n’,把 ‘\n’留存输入缓冲区;把接收的一串字符存储在形式参数指针指向的空间,并在最后自动添加一个’\0’。...3.fgets   从文件或标准输入接收一串字符,遇到’\n’时结束,把’\n’也作为一个字符接收;把接收的一串字符存储在形式参数指针指向的空间,并在’\n’后再自动添加一个’\0’。...这里需要注意的是,换行符不作为读取串的内容,读取的换行符被转换为 null(’\0’) 值,并由此来结束字符串。即换行符会被丢弃,然后在末尾添加 null(’\0’) 字符。...当然,fgets 函数主要是为文件 I/O 而设计的(注意,不能用 fgets 函数读取二进制文件,因为 fgets 函数会把二进制文件当成文本文件来处理,这势必会产生乱码等不必要的麻烦)。...,stdin); fgets(str2,11,stdin);/*fgets的用法,第一个参数为数组,第二个为数组的大小,第三个网上是这么说的。

    4.6K60

    Linux 常用命令 vim常用命令 速查

    应用实例 在进行系统维护时,经常会出现内存使用量惊人,而又不知道是哪一个进程占用了大量进程的情况。...在Linux系统上,正则表达式通常被用来查找文本的模式,以及对文本执行“搜索-替换”操作和其它功能。 应用实例 查询DNS服务是日常工作之一,这意味着要维护覆盖不同网络的大量IP地址。...例如 1,20s/old/new/g 应用实例 在testfile文件的第四行后添加一行,并将结果输出到标准输出,在命令行提示符下输入如下命令: `sed -e 4a\newLine testfile...的三种工作方式: 命令模式: 在这种模式下,可以通过输入vi的命令对文件的内容就行处理(复制,删除,移动等),也可以通过按光标来移动光标 编辑模式: 在这种模式下,可以在光标处输入内容 命令项模式:...、剪切、移动 yy: 复制当前行 nyy: 复制当前行开始的n行 先按 v 进入自由选择模式: 使用光标移动命令选择区域,按 y 复制选中行 ,按 d 剪切选中行,在需要粘贴处按 P或p 即可。

    4.2K31

    Matlab系列之文件操作

    这两种文件也有各自的优缺点,文本文件中,一个字节代表一个字符,因此便于直接对字符进行处理,也方便直接输出字符到文本中,但是会占据较多的空间,也比较耗时;而二进制文件采用二进制形式保存数据,会节省掉所需的空间和转换时间...‘r’是默认的类型,也就是说当使用第一个调用格式时,是只有读取的能力,无法进行写操作;还有就是当没有指定文件的类型时,默认的是以二进制文件访问,如果要打开文本文件,就需要在访问类型上加个’t’,例如:’...save(filename,variables,'-append')将新变量添加到一个现有文件中。如果MAT文件中已经存在变量,则save会使用工作区中的值覆盖它。...7、fgets fgets函数以字符串形式返回文件中的下一行内容,包含结束符,用法: tline= fgets(fileID) tline= fgets(fileID,nchar) 如果使用fgets的返回文件下一行内容时...,遇到文件结尾(EOF),则返回-1,所以返回的字符串中包含文本结束符,nchar指定返回的字符个数,在遇到行结束符时不追加字符。

    3K21

    文件操作

    文件流包括两个为顺序读写数据特殊设计的成员函数:write 和 read。第一个函数 (write) 是ostream 的一个成员函数,都是被ofstream所继承。...,则默认为当前工作目录 mode字符串 使用方式 具体含义               “rt”    只读打开一个文本文件,只允许读数据 “wt”     只写打开或建立一个文本文件,只允许写数据 “...b 字符,如 rb、w+b 或 ab+ 等组合,加入 b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件.不过在 POSIX 系统,包含 Linux 都会忽略该字符.由 fopen() 所建立的新文件会具有...读取字符的结果也可以不向字符变量赋值 (例如:  fgetc(fp); 但是读出的字符不能保存) 在文件内部有一个位置指针,用来指向文件的当前读写字节位置,在文件打开时,该指针总是指向文件的第一个字节....* fgets(char * s,int size,FILE * stream); 说明: fgets() 用来从参数 stream 所指的文件内读入字符并存到参数 s 所指的内存空间,直到出现换行字符

    1.8K20

    C语言进阶-文件操作超详解

    出错 “w” (只写) 为了输出数据,打开一个文本文件 建立一个新的文件 “a” (追加) 向文本文件尾添加数据 建立一个新的文件...ab” (追加) 向一个二进制文件尾添加数据 出错 “r+” (读写) 为了读和写,打开一个文本文件 出错 “w+”..., FILE *stream ); 注意: fgets函数功能为从流中读取一个字符串到相应的存储位置;第一个参数为获取到字符串的存储的位置;第二个参数为要读取的字符串最大字符数;第三个参数为要读取文件的文件指针...---- fseek函数 作用: 根据文件指针的位置和偏移量来定位文件指针 注:每当读取文件的数据时,文件指针会指向下一个空间地址 定义: int fseek ( FILE * stream...); fclose(pf); //注:fclose在关闭文件的时候,也会刷新缓冲区 pf = NULL; return 0; } 结论: C语言在操作文件的时候,需要做刷新缓冲区或者在文件操作结束的时候关闭文件

    1.3K20

    【C语言标准库函数】标准输入输出函数详解:字符串输入输出

    在C语言编程中,字符串作为最常用的数据类型之一,其输入输出操作贯穿于程序开发的各个场景。...文件逐行读取:读取文本文件时,逐行获取文件内容(如配置文件解析、日志读取)。 网络流读取:在网络编程中,从socket关联的文件流读取文本数据(需结合流的特性处理)。...("提示:仅读取到第一个空格前的内容!...2.1.1 函数简介与原型 功能:将指定字符串输出到标准输出(stdout,默认屏幕),自动在字符串末尾添加一个换行符('\n'),输出时会忽略字符串中的'\0'(仅输出'\0'之前的内容)。...包含换行符的原因:fgets的设计规则是“读取到换行符时停止,且保留换行符”,仅在读取长度达到n-1或遇到EOF时才不保留换行符。这是与gets的核心差异之一,也是其可判断是否读取完整行的依据。

    8510

    一起来学matlab-matlab学习笔记5 低级文件输入输出函数

    (2)在文件上进行以下操作:口使用fread函数读二进制数据。口使用fwrite函数写二进制数据。口使用fgets/fgetl函数从文本文件中逐行读字符串。...如果输入流是字节,而且fread到达了文件结尾,但是一个元素需要的字节数才读了一半,这不足一个元素的部分数据将被忽略。然而,如果输入流是位,则不足一个元素的部分数据将被返回作为最后的值。 ?...从文本文件逐行读字串 在MATLAB中提供了fgetl与fgets函数来实现从文本文件读字符串行,并且将它们存储在字符串向量中。...fgetl函数只用于文本文件。 fgets函数 在MATLAB中提供了fgets函数从文件中读一行,并保留换行符。...fgets函数只用于文本文件。 tline=fgets(file1D,nchar):从fileID指定的文件读一行文本,带有行结束符,返回的行最多有nchar个字符。

    1.9K30

    【C语言】深入解析文件操作:原理与实践

    文本文件: 如果要求在外存上以ASCII码的形式存储,则需要在存储前转换。以ASCII字符的形式存储的文件就是文本文件。 怎么理解呢?...文本文件模式 文件使用方式 含义 如果指定文件不存在 “r” (只读) 为了输入数据,打开一个已经存在的文本文件 出错 “w” (只写) 为了输出数据,打开一个文本文件 建立新文件 “a” (追加) 向文本文件尾添加数据...,该内存块至少有 size * count字节的空间。...七、文件读取结束的判定 对于文件读取结束的判断 文本文件读取是否结束,判断返回值是否为 EOF ( fgetc ),或者 NULL ( fgets ) 例如: fgetc 判断是否为 EOF fgets...,但发生对应的情况时,标记会被置为真(非0值),feof() 和 ferror() 查询这些标记的当前状态返回相应值。

    11410

    文件操作

    绝对路径是从根目录开始的完整路径,而相对路径则是相对于当前工作目录的路径。例如,当文件位于工程文件夹中时,可以使用相对路径test.txt;如果文件位于上一级目录中,则可以使用.....fgets函数会从文件中读取最多num-1个字符,直到遇到换行符或文件结束符。读取完成后,会在字符串末尾自动添加'\0'。 fputs函数 fputs函数用于将字符串写入文件。...需要注意的是,不能使用feof的返回值直接判断文件是否结束。正确的做法是结合fgetc、fgets或fread的返回值来判断。 文本文件: 判断fgetc的返回值是否为EOF。...文件读取结束的判断: 不能直接使用feof的返回值来判断文件是否结束。对于文本文件,应结合fgetc或fgets的返回值;对于二进制文件,应结合fread的返回值。...文件路径的处理: 文件路径可以是绝对路径或相对路径。相对路径是从当前工作目录开始的路径,因此在使用相对路径时,需要确保当前工作目录正确。

    36300

    初识C语言·文件操作

    个字符的,因为这里的文件打开模式是w,是写入,那么运行第二次时,我们把w换成r就fgetc函数就开始操作了。...,这里就不介绍了 sscanf sprintf: sprintf的作用是将格式化的数据放到指针指向的空间里面,sscanf的作用是从指针指向的空间种读取格式化的数据(代码如下): int main()...当读取文本文件的时候,fgetc如果正常读取结束返回的是eof,fgets如果正常读取结束返回的是NULL,这也是它们的区别。...有人会说为什么不输出一个就给磁盘一个,实际上调用函数的时候,计算机底层也会被调用起来,所以看似工作的有程序,内存等,实际上还有计算机各个部分都是调用起来的,如果输出一个就传送一个出去,那其他部分的工作就是进行不下去...,所以缓冲区存在的意义就是为了提高工作效率。

    32410

    收集飞花令碎片——C语言字符串(纯干货)

    因为在 “” 里面的字符串中就已经自动包含了字符串的结束标志即’\0’,所以当我们输出arr1自然就不会产生乱码 当我们在使用 {} 字符串的定义的方式时,一定要记得加上字符串的结束标志,否则就会出现乱码现象...','c','\0'}; 必须显式添加 '\0',否则不是合法字符串 指针 char *s = "abc"; 指向只读的字符串常量(不可修改内容) 4、与字符串相关的格式说明符 在 C 语言中,与字符串相关的格式说明符主要用于输入...拓展:fgets fgets 是 C 语言标准库中用于安全读取字符串的重要函数,相比 gets 和 scanf 的 %s,它提供了更好的安全性和控制能力。...(键盘)读取 自动添加结束符: fgets 会自动在字符串末尾添加 \0 所以实际读取的字符数 = 指定长度 - 1 拓展:使用fgets的时候,如何去掉换行符 如果用户按了回车,换行符...代码示例: char str[10]; scanf("%*s %s", str); // 跳过第一个单词,读取第二个 二、C语言字符串的库函数 是C语言中处理字符串和内存操作的重要头文件

    22610

    C语言文件读写操作(详解)

    事实上,当写入文件时,并不会马上写入磁盘中,而是先写入缓冲区,只有在缓冲区已满或“关闭文件”时,才会将数据写入磁盘。 文件类型 文本文件和二进制文件: 文本文件是以字符编码的方式进行保存的。...在stdio.h有一个非常重要的东西,文件指针,每个文件都会在内存中开辟一块空间,用于存放文件的相关信息,这些信息保存在一个结构体中: struct _iobuf { char *_ptr; /...(不存在则出错) “w”:以只写的形式打开文本文件(若不存在则新建,反之,则从文件起始位置写,覆盖原内容) “a”:以追加的形式打开文本文件(若不存在,则新建;反之,在原文件后追加) “r+”:以读写的形式打开文本文件...(读时,从头开始;写时,新数据只覆盖所占的空间) “wb”:以只写的形式打开二进制文件 “rb”:以只读的形式打开二进制文件 “ab”:以追加的形式打开一个二进制文件 “rb+”:以读写的形式打开二进制文件...只是在文件尾部追加数据后,可以从头开始读 “wb+”:功能与”w+”相同。只是在读写时,可以由位置函数设置读和写的起始位置 “ab+”:功能与”a+”相同。

    2.3K40

    C语言常用的字符串函数及案例

    ’\0‘字符,puts函数在空字符处停止输出,并忽略其余字符,然而字符还在缓冲区中,下面的函数调用就把这些字符打印了出来。...fgets函数地区输入一直到第一个换行符的后面(’\n‘),或读到文件结尾,或者读取SYTLEN-1个字符,然后fgets函数在末尾添加一个空字符(’\0‘)使之成为一个字符串,因此循环判断while(...fgets函数保留了换行符,不同于gets函数,因此使用fputs函数打印字符串时也不会在其末尾添加换行符。...如果分配给第一个数组的空间不够大,多出来的字符一处到相邻存储单元时就会出问题。 当然可以利用上面的strlen()函数案例查看第一个数组的长度并且使用其案例中的截断字符串函数截断。...注意:要给拼接后的字符串长度加一才能够空间存放末尾的空字符。或者,用strncat()函数的第三个参数指定了最大添加字符数。

    1.3K10

    【C-文件操作】一文教你如何将代码的数据持久化

    参数3:指向FILE结构的指针 返回值:读取成功时返回读取到的字符数组的首地址; 读取失败时返回NULL 关于n: 当n>STR_MAX_SIZE,程序会自动识别,再读取完该行所有字符后添加...\n换行 对于fgets是一次读取一行字符串,如果有多行则需要使用多次fgets 关于打开或写入等等失败的返回值问题,看函数原型: 函数原型中返回值的类型为int,一般以EOF作为失败时的返回值...,比如fgetc 函数原型中返回值的类型为char*,一般以NULL作为失败时的返回值,比如fopen和fgets  4-5 格式化输出函数:文件的写入--->fprintf int fprintf...( FILE *stream, const char *format [, argument ]...); 备注,这里和后面的fscanf都和原来我们学过的printf和scanf类似,只是在参数列表中添加了一个参数...备注:文本编辑器只能解析文本文件的数据  7.文件读取结束的判定  int feof(FILE* pf) 作用:当文件读取结束时,判断时读取失败异常结束,还是遇到文件末尾正常结束 返回值:返回值为为非

    1.1K30

    文件操作入门(上)—— 文件类型及顺序读写基础(含打开关闭)

    二、二进制文件和文本文件 根据数据的组织形式,数据文件分为二进制文件和文本文件。...二进制文件:数据在内存中以二进制的形式存储,如果不加转换地输出到外存(磁盘)的文件中 文本文件:如果要求在外存上以ASCLL码的形式存储,则需要在存储前转换,以ASCLL字符的形式存储的文件 数据在文件中的存储方式...追加) 向文本文件尾添加数据 建立一个新的文件 “rb”(只读) 为了输入数据,打开一个二进制文件 出错 “wb”(只写) 为了输出数据,打开一个二进制文件 建立一个新的文件 “ab”(追加) 向一个二进制文件尾添加数据...建立一个新的文件 “r+”(读写) 为了读和写,打开一个文本文件 出错 “w+”(读写) 为了读和写,建立一个新的文件 建立一个新的文件 “a+”(读写) 打开一个文件,在文件尾进行读写 建立一个新的文件...失败 时,返回 EOF。

    20110

    文件操作——C语言

    每当打开一个文件时,系统会根据文件的情况自动创建一个FILE结构的变量,并填充其中的信息,在我们写代码时不需要关注这些细节。(感兴趣的可以自己研究以下) 说了这么多,文件指针到底是干什么用的?...= NULL; return 0; } 我们看到,读取10个字符,输出的却只有9个字符,只是因为,fgets在读取的过程中读取num-1个字符,在第num个位置会自动添加 '\0'...;并且,以 '\n'为结束标记,在读取到'\n'后,在末尾处会添加 '\0'构成字符串。...如果读取了num-1 个字符后,还没有读取到'\n'时,也会自动添加'\0',结束读取。...函数使用 对于文本文件:判断函数返回值是否为EOF(fgetc),或者NULL(fgets) fgetc访问判断是否为EOF; fgets访问判断返回值是否为NULL;

    48110
    领券