13.1.2 文件输入输出

一.重定向

如果已经写好了一个程序,它是通过标准输入标准输出,也就是用scanf和printf做输入输出的,我们有一个非常简单的办法,可以把这个程序的输出写到文件里去,可以让这个程序从文件里读.这个方法就是重定向.我们可以用<或>做重定向.老师用的是unix做示例,顺带附上上节课的代码:



逐条解释:

1.将test.c文件编译成一个可执行文件.

2.直接运行test程序,输入1234.

3.再次运行test程序,输入12345.

4. ./test > 12.out
运行 test 程序,并将输出重定向到文件 12.out 中,而不是直接显示在终端上。

5. more 12.out
查看 12.out 文件的内容,输出为:
12345
1:6

6. cat > 12.in
创建一个新的文件 12.in,并等待用户输入内容。用户输入了 12345 并按下回车,然后通过 Ctrl+D 来结束输入。

7. more 12.in
查看 12.in 文件的内容,输出为:
12345

8. ./test < 12.in
运行 test 程序,并将 12.in 文件的内容作为输入传递给程序,输出结果为:
12345
1:6

9. ./test < 12.in > 12.out
运行 test 程序,将 12.in 文件的内容作为输入,并将输出结果重定向到文件 12.out 中。

10. more 12.out
查看 12.out 文件的内容,输出为:
12345
1:6

二.fopen函数

当然上面这种不是一般的方式,一般的方式是说,我们要做一个file.在stdl.h这个头文件里已经给我们声明好了这种类型,叫做File*,即指向File的指针.所以我们需要定义一个File的变量,用fopen函数去打开这个文件.然后打开以后你用fscanf和fprintf来做文件的读和写.

下面是打开文件的标准代码:

第一个括号里的file是文件名,第二个r表示我们要去打开这个文件来读.然后这个函数的返回值(即fp)如果它没有打开那个文件,它会返回一个NULL,因此标准的结构我们要去判断一下fp是不是NULL.

我们现在来试一下这个程序:

我们用fopen打开12.in这个文件(上节课创建的),如果打开了,那么我们用fscanf去读那个文件,fp是指向File的一个指针,后面的东西就和原来的scanf是一模一样的.读到那个整数然后我们输出它,最后再关掉文件.如果打不开就输出无法打开文件.我们来运行一下这个程序:

我们做的事情首先是运行它,因为我们已经有12.in在那了,所以我们就得到了12345.后面我们把12.in删除了,然后再运行,它会给我们输出"无法打开文件".

fopen的第一个参数是一个文件名,是一个字符串,第二个参数也是一个字符串.这个字符串里你可以放一点东西.我们刚才放的是r.下面是一些我们能放的东西:

(还有a+,不过上面没写出来.另外最后一个的用法:如ax,wx,rx等等.)



 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值