【时时三省】(C语言基础)顺序读写数据文件
文件打开之后,就可以对它进行读写了。在顺序写时,先写入的数据存放在文件中前面的位置,后写入的数据存放在文件中后面的位置。在顺序读时,先读文件中前面的数据,后读文件中后面的数据。也就是说,对顺序读写来说,对文件读写数据的顺序和数据在文件中的物理顺序是一致的。顺序读写需要用库函数实现。
怎样向文件读写字符
读写一个字符的函数
例题:
从键盘输入一些字符,并逐个把它们送到磁盘上去,直到用户输入一个“#”为止。解题思路:用fgetc函数从键盘逐个输入字符,然后用fputc函数写到磁盘文件即可。
编写程序:
程序分析:
( 1 )用来存储数据的文件名可以在fopen函数中直接写成字符串常量形式(如指定a1 ),也可以在程序运行时由用户临时指定。本程序采取的方法是由键盘输入文件名。为此设立一个字符数组filename,用来存放文件名。运行时,从键盘输入磁盘文件名file1. dat,操作系统就新建立一个磁盘文件file1.dat,用来接收程序输出的数据。
( 2 )用fopen函数打开一个“只写”的文件( w表示只能写入不能从中读数据),如果打开文件成功,函数的返回值是该文件所建立的信息区的起始地址,把它赋给指针变量fp ( fp已定义为指向文件的指针变量)。如果不能成功地打开文件,则在显示器的屏幕上显示“无法打开此文件”,然后用exit函数终止程序运行。
( 3 ) exit是标准C的库函数,作用是使程序终止,用此函数时在程序的开头应包含stdlib.h头文件。( 4 )用getchar函数接收用户从键盘输入的字符。注意每次只能接收一个字符。注意程序的作用:用scanf函数输入文件名时,最后加了一个“回车”,它表示输入的字符串结束,它前面输入的字符作为文件名,但是“回车”符仍保留在缓冲区中。为了避免其后把它作为有效数据读取,用第8行的getchar函数把它读取了,但并不赋给任何变量,只是把回车符“消化”了。“ch = getchar()”是接收从键盘输入的一个字符并赋给ch,并在循环体中不断重复此操作。今从键盘连续输入字符串" computer andc#”,”#”是用来向程序表示“输入的字符串到此结束”。用什么字符作为结束标志是人为的,由程序指定的,也可以用别的字符(如”!”,”@”或其他字符)作为结束标志。但应注意:如果字符串中包含”#”,就不能用“#”作结束标志。
( 5 )执行过程是:先从键盘读入一个字符,检查它是否为' # ',如果是,表示字符串已结束,不执行循环体。如果不是‘#’,则执行一次循环体,将该字符输出到磁盘文件file1 .dat。然后在屏幕上显示出该字符,接着再从键盘读入一个字符。如此反复,直到读入’#’字符为止。这时,程序已将computer and c写到以filel .dat命名的磁盘文件中了,同时在屏幕上也显示出了这些字符,以便核对。
( 6 )为了检查磁盘文件fle1.dat中是否确实存储了这些内容,可以在Windows的资源管理器中,按记事本的打开方式打开文件,在屏幕上会显示:
Computer and c(显示出此文件中的信息)
这就证明了在file1 .dat文件中已存入了computer and c的信息。