5. scanf/fscanf/sscanf printf/fprintf/sprintf 两组函数对比 C语言中有这样两组函数: scanf,fscanf,sscanf 和 printf/fprintf...大家有没有发现,我们上面讲的那几个函数,在读写文件数据的时候,要么是从文件起始位置开始,一次读取一个字符,如果再读的话就从上次的位置继续往后再读一个;要么是一次读取一个字符串,依次往后读…。...那说到底,都是在顺序读取文件。 那么,如果我们在读取文件时,不想按照顺序读呢? 如果我们想对文件进行随机读取,想从哪个位置开始读就从哪个位置读,能不能做到呢? 当然可以。...那fseek呢,就可以重新定位与文件关联的这个位置指示器,那这样的话,我们想从哪个位置读写文件,就可以通过fseek把位置指示器定位到我们想要的位置,这样,就可以实现对文件的随机读写了。...8.2 如何判断文件是否读取结束 那说到底函数feof 不是用来判断文件是否读取结束的,那我们应该如何去正确判断一个文件是否读取结束呢?
文件读写操作 (摘自:点击直达) fgetc 从文件中读取一个字符 格式为:fgetc(fp) fp为文件指针,每次读取后自动向后挪动。...fgets 从文件中读取一个字符串 格式为:fgets(s,n,fp) s为字符串指针(数组名),n为最大读取多少字符,fp为文件指针。...:点击直达 如果fprintf和fscanf进行搭配时,如果不想以空格或换行为分割点,例如采用:,为分隔符,那么可以采用%[^,],的形式来读取。...文件状态检查函数 feof文件是否结束(结束返回非0,没结束返回0) ferror 检查文件读/写出错 clearerr 清除文件错误标志 ftell 了解文件指针的当前位置(函数 ftell 用于得到文件位置指针当前位置相对于文件首的偏移字节数...; 第一个参数stream为文件指针 第二个参数offset为偏移量,正数表示正向偏移,负数表示负向偏移 第三个参数origin设定从文件的哪里开始偏移,可能取值为:SEEK_CUR、 SEEK_END
别担心,本教程不会让你的程序像初恋一样段错误,而是带你从fopen()到fseek(),一步步成为文件操作界的"扫地僧"。...友情提示:阅读前请备份你的文件——毕竟,rm -rf的悲剧总是从自信满满开始的。"...fgets函数的功能就是从指定位置读取一个字符。该函数调用成功会返回读取到的的字符;若读取文件时发生错误,或是已经读取到文件末尾,则返回EOF。...fgets函数的功能就是从指定位置读取指定字符个数的数据储存到指定位置。该函数调用成功会返回用于储存数据的位置的地址,如果读取过程中发生错误,或是读取到了文件末尾,则返回一个空指针(NULL)。...概括一下,fread函数的功能就是从stream位置,以二进制的形式读取count个每个元素大小为size的数据,到buffer位置。
上篇【C文件操作1】如何写入读取?fopen的6种组合参数怎么用?介绍了C语言文件操作的基本函数,fopen、fwrite、fread、fclose。这些只能从文件头读写或文件尾追加写入。...本篇介绍文件中随机位置读写的方法,会介绍fseek、ftell、rewind。 此外,再介绍几个字符读写函数:fputs、fgets、fpritf、fscanf,用于编写测试代码时用。...写入失败,返回EOF */ int fputs( char *str, FILE *fp ); fgets fgets 函数用来从指定的文件中读取一个字符串,并保存到字符数组中...函数原型: /** @func: fgets * @brief: 从指定的文件中读取一个字符串,并保存到字符数组中 * @para: [str]:字符数组 * [n]:要读取的字符数目...函数原型: /** @func: fscanf * @brief: 从文件中读取格式化的字符串 * @para: [fp]:文件指针 * [format]:格式化字符串
;//读取3个字符,从c[2]开始存放,或遇到'\n' cin.get( &c[4], 4, '7' );//读取4个字符,从c[4]开始存放,或遇到'7' cout c c[0]等于直接写c,这样写只是说明可以指定精确存放位置。 ...从文件流中读取一个字符串,直到遇到换行符,而且换行符也会被读入,并且不会自动转换为'\0';或者读入n-1个字符后自动添加一个'\0',有标准和宽字符两种版本。 ...从流(fgetc, fgetwc)或者标准输入(_fgetchar, _fgetwchar)读取一个字符,有标准和宽字符两种版本。前一组以文件指针作为参数,后一组没有参数。 ...从文件输入流读取格式化数据,输入格式必须与设置的格式完全相同,示例如下。 Read formatted data from a stream.
1.3 标准流 C语⾔程序在启动的时候,默认打开了3个流: •stdin - 标准输⼊流,在⼤多数的环境中从键盘输⼊,scanf函数就是从标准输⼊流中读取数据。...示例: 这里我们运用"r"只读的方式打开文件,这里我们是进行字符的读取,所以我们应在相应文件中放上内容 再看相应文件中的内容: 再看运行结果: 注意在读取字符时它会从第一个字符的位置开始读取,当每次读取完成后...,光标会往后移动一位,利用这一特性,再利用循环进行读取,这样我们就可以达到像读取字符串一样,当我们想读取的个数比读取文件中的个数多会发生什么呢?...long int ftell ( FILE * stream ); 我们直接传文件指针就行,他会返回光标位置相较于文本最开始的偏移量 3 rewind函数 这个函数可以让文件指针的位置回到文件的起始位置...记住缓冲区的⼤⼩根据C编译系统决定的。
读取数据也是同理fscanf读取一行字符串,除了文件外,还有键盘和网卡。 ...(pfr); pfr = NULL; 注意:实际上每次在读取文件的时候,文件指针一开始会指向第一个字符的位置,每调用一次fgetc,文件指针就会向后移动一个单位。...fgets 的函数声明如下: 第一个参数:存储读取到的字符串 第二个参数:要读取的字符个数 第三个参数:任意输入流,文件流或者标准输入流(即文件指针或者stdin) 返回值:读取成功则返回读取到的字符串地址...值得注意的是,如果存在多行, 调用 fgets 读取时,读取完第一行的所有字符,才会转到第二行开始读取,并不是 每调用一次 fgets 就换一行。 ...,将 b 以浮点型的方式写入 fclose(pf); (2)fscanf 函数 fscanf 函数的作用是按照指定格式,从流中读取内容(前提是流中有对应类型的数据)。
1.2使用fgetc和fputc 在使用fgetc之前,我们先用fputc将一个字符写进文件中,这样才能使用fgets从非空的文件中读取字符。...2.fgets和fputs 2.1认识fgets和fputs fgets的作用是从流中读取字符串,并将其存放到指定的字符数组中 它有三个参数,第一个是用来储存从流中读取到的字符串的变量,第二个参数...,才能知道如何才能偏移到想要的位置。...偏移的位置一共有三种,SEEK_SET的含义是从文件开始的位置开始偏移,SEEK_CUR的意思是从当前的流的位置开始偏移,比方说我用fgetc对一个文件成功地取出了两个字符,这个时候偏移量为0时取一个,...我这时使用SEEK_CUE就会直接从文件的这个位置开始偏移。
w+ 读写,全部清空再从头开始写。文件不存在则会创建一个新文件。 a+ 读写,从开头读,从后面追加写。文件不存在则会创建一个新文件。...写入文件 函数 fputc() 把字符c写入到 fp 所指向的输出流中。写入成功,它会返回写入的字符的ASCII码值,发生错误返回 EOF。...写入成功,文件的位置指针会自动后移,返回一个非负值,发生错误返回 EOF。...\n", fp); fclose(fp); } 读取文件 fgetc() 函数从 文件中读取一个字符。返回值是读取的字符的ASCII码值,发生错误则返回 EOF。...fscanf() 函数来从文件中读取字符串,和scanf用法相同。
("fopen"); return 1; } 这样我们就打开了文件了,至于读写操作我们后面讲,现在先来看看如何关闭文件 文件的关闭 我们来看看关闭文件的函数fclose的原型: int...已经被清除了,并且字符x已经被我们写入到文件了 3.fgets函数 fgets函数的作用是从文件中读出一行的信息,我们来看看它的原型: char * fgets ( char * str, int...4.fputs函数 fgets函数和fputc函数很相似,只是fgets是将一行字符从流中读出,而fputs的作用是将一行字符写入到文件中,我们来看看它的原型: int fputs ( const...5.fscanf函数 fscanf是以格式化的方式对文件进行读取操作,它与scanf函数的使用方法相似,它们的区别就是fscanf的第一个参数是流,后面和scanf的参数一样,我们来对比一下scanf...scanf可以参考文章: 【C语言】printf和scanf函数详解 我们这里也可以顺便说一下它们之间的关系,scanf是从标准输入流读取数据,而fscanf可以从任何流中读取数据,那么fscanf
文章目录 I C 函数 fopen 打开文件 II C 函数 fprintf 写出文件 III C 函数 fscanf 读取文件 ( 遇到空格换行结束) IV C 函数 fgets 读取文件 (...文件打开模式只读或只写操作 : ① " r " : 打开已经存在的文本文件 , 只读操作 ; ② " w " : 打开文本文件 , 只写操作 , 从开始开始写入内容 ; a....C 函数 fscanf 读取文件 ( 遇到空格换行结束) ---- fscanf 函数简介 : ① 头文件 : stdio.h ② 函数原型 : int fscanf(FILE * stream, const...* format ) : C 字符串 , 声明读取的数据类型 ; ⑤ 函数作用 : 根据规定的数据格式 , 从输入流中读取数据 ; fscanf 与 fgets 函数对比 : ① fscanf 遇到空格...姓名:Tom fscanf 读取到的文本内容 : 学号:1 IV C 函数 fgets 读取文件 ( 遇到换行结束) ---- 1. fgets 函数简介 : ① 头文件 : stdio.h ② 函数原型
其实输入与输出对于不管什么系统的设计都是异常重要的,比如设计 C 接口函数,首先要设计好输入参数、输出参数和返回值,接下来才能开始设计具体的实现过程。...像 FILE* 这样的文件指针称为句柄(Handle)。 打开文件操作是对文件资源进行操作的,所以有可能打开文件失败,所以在打开函数时一定要判断返回值,如果失败则返回错误信息,以方便快速定位错误。...,直接返回当前文件指针在文件中的位置 // 实现计算文件字节数的功能 fseek(fp, 0, SEEK_END); ftell(fp); 五、以字符串为单位的IO函数 fgets 从指定的文件中读一行字符到调用者提供的缓冲区...如果文件一行太长,fgets 从文件中读了 size-1 个字符还没有读到 ‘\n’,就把已经读到的 size-1 个字符和一个 ‘\0’ 字符存入缓冲区,文件行剩余的内容可以在下次调用 fgets 时继续读...(3). fprintf / fscanf fprintf 打印到指定的文件 stream 中,fscanf 从文件中格式化读取数据,类似 scanf 函数。
,缓存,内存,硬盘等等,那么本场要学习的就是如何从磁盘从读取数据。...fgets和gets函数是非常不像的,fgets函数有三个参数: char * fgets ( char * str, int num, FILE * stream ); fgets函数会从流里面读取num...0; } 这段代码的意思就是文件里面有英文字母26个,使用fgetc函数一个一个读取,最后的打印结果应该是a b c d e,运行到d的时候文件指针,也就是光标,指向的是e,那么如果我们想要让文件指针回到最开始的位置...这里用到的函数就是fseek函数,随机读取函数,可以 使文件指针指向最开始到结尾的任意位置: 它有3个参数,第一个参数是文件指针,第二个是偏移量,第三个是计算偏移量的起始位置,偏移量很好理解,光标指向第一个字符的时候偏移量就是...文件读取结束分为正常读取到了结尾和读到一半遇到错误了,那么我们如何判断文件是不是正常结束呢?
可以将程序中的数据保存为一个文件。待下次重新启动程序时,从之前保存的文件中提取数据。这样,程序就不会在重启后失忆了。...它就相当于在函数printf第一个参数前,加了一个文件结构指针参数,用于指明操作哪个文件。其他的使用方法和printf几乎一致。...fscanf函数 fscanf相当于在函数scanf第一个参数前,加了一个文件结构指针参数,用于指明操作哪个文件。...fgetc函数每次获取一个字节。因此,文件指针向后移动一个字节。所以,重复调用fgetc函数可以逐个读取文件内的字符。 fgets函数每次获取一行字符。因此,文件指针向后移动到下一行开始。...origin从什么位置开始偏移。
文件名: 每一个文件都要有一个唯一的文件标识,以便用户识别和引用 一个文件的文件名包含三部分:文件路径+文件名主干+文件后缀 就比如 text.txt这样一个文本文件,在电脑D盘C语言中study.c这个文件路径中...fgets fgets函数的参数有三个,一个是str ,它是读取完数据要存放到的内存块的首地址; num是要读取的字符个数;stream就是文件指针 这里我们从test.txt文件中读取...随机读写 以上是顺序读写,就是从文件开头按顺序来读写,那我们如果想要从文件某个位置开始读写,就要用到随机读写相关函数。...apple的后面,那我们也可以从当前位置开始调,向前调,offset就是负的。...在我们程序运行的过程中,我们该如何去判断访问一个文件是否访问结束,在C语言中有这样一个函数:feof feof函数 这个函数的作用是:当文件访问结束时,判断访问结束的原因是不是: 遇到文件末尾。
) fgetc从fp的当前位置读取一个字符. fputc() int fputc(int ch, file *fp) fputc是将ch写入fp当前指定位置. fscanf() int fscanf(FILE...= EOF) { putchar(c); } return 0; } 以上代码演示了如何使用getc()从标准输入读取字符并将其写入标准输出。...:同getc fgetc() 是 C 库函数,用于从文件中读取一个字符。...所以字符+换行符<=n-1,因为一定要留一个NULL字符来标识缓冲区的结束; fgets是C语言库函数,它从指定的文件中读取一行字符串。...补充:write出错的一个常见的原因是:磁盘已写满,或者超过了一个给定进程的文件长度限制。对于普通文件,写操作从文件的当前偏移量处开始。
文章目录 一、文件的顺序读写 1.1 顺序函数读写函数介绍 1.2 fgetc函数和fputc函数 1.3 fputs函数和fgets函数 1.4 fprintf函数和fscanf函数 1.5 fwrite...函数原型: int fscanf ( FILE * stream, const char * format, ... ); 从流中读取格式化的数据 从流中读取数据,并根据参数格式将其存储到附加参数所指向的位置...offset:相对于 origin 的偏移量。偏移量可以是正数(向文件末尾方向移动)或负数(向文件开头方向移动)。 origin:指定了从哪个位置计算偏移量的基准。...对于二进制流,这是从文件开头开始的字节数。 对于文本流,数值可能没有意义,但仍然可以用于稍后使用fseek将位置恢复到相同的位置(如果使用ungetc放回的字符仍然等待读取,则行为未定义)。...使用 rewind 函数后,可以再次从文件开头开始读取数据。
fgets文本行输入函数 fgets fgets读取内容时会将终止符\0认为是其中的内容,实际读取的是num-1个元素,剩下一个为\0。...下一次读取会从之前读取结束的位置开始 如果读取正常,返回的是存放读取到的数据的地址 如果读取失败,返回NULL char * fgets ( char * str, int num, FILE...总结: fgets读取内容时会将终止符\0认为是其中的内容,实际读取的是num-1个元素,剩下一个为\0。 若文本中有换行,读取时会自动认为换行符\n是其中的内容,并将其读取。 如何进行换行?...如上我们只需进行二次读,就可以将下一行读出,在进行第二次读取时会从第一次读取后面的位置开始。...: fscanf格式化输入函数 fscanf int fscanf ( FILE * stream, const char * format, ... ); format是格式,data是数据 从文件流以一定的格式读取数据
文件的顺序读写 fgetc和fputc的介绍 fgetc为字符输入函数,fputc为字符输出函数,适用所以输入流和输出流 函数原型: int fgetc ( FILE* stream ); 该函数从stream...char * format, ... ); 我们可以看出fscanf函数是从stream指向的流中读取数据。...; } 此循环的含义便是,每次从pf指向的文件中读取三个类型变量到a, arr, f中,每成功读取一次时fscanf便会返回3,此循环便会继续,直至读取结束返回值不再为3,以此达到遍历文件中的数据。...举个例子如果我们想把文件指针从开头向后偏移6个字符位置,便可这样写: fseek(pf, 6, SEEK_SET); ftell的介绍 ftell函数作用是告诉我们当前文件指针所在的位置的偏移量,函数原型如下...); int pos = ftell(pf); rewind的介绍 rewind函数用法很简单,就是将文件指针重新指到文件的开始位置,原型如下: void rewind ( FILE * stream
fwrite函数会将指定位置的数据写入到文件中,并返回实际写入的数据项数量。fscanf函数用于从文件中按格式读取数据。...是定位的起始位置,可以是以下值之一:SEEK_SET:从文件开头开始计算偏移量。...SEEK_CUR:从当前位置开始计算偏移量。SEEK_END:从文件末尾开始计算偏移量。fseek函数将文件指针定位到指定位置,并返回0表示定位成功,返回非零值表示定位失败。...常用的格式化输入函数有fscanf和fgets,常用的格式化输出函数有fprintf和fputs。fscanf函数用于从文本文件中进行格式化读取。...行读写:使用fgets和fputs等函数按行读取和写入文件。这种方式适用于需要按行处理文件内容的情况。格式化读写:使用fscanf和fprintf等函数按格式读取和写入文件。