重定向
程序可以通过两种方式使用文件,第一种方法是,显示使用特定的函数打开文件、关闭文件、读取文件、写入文件,诸如此类书中13章才会介绍,这里我也并不知道怎么说,就留到13章介绍吧;第二种方法,设计能与键盘和屏幕互动的程序,通过不同的渠道,重定向输入或输出至文件,这种方法有所限制,但是用起来比较简单。
/*echo_eof.c -- 重复输入, 直到文件结尾*/
#include <stdio.h>
int main (void)
{
int ch;
while((ch = getchar()) != EOF){
putchar(ch);
}
return 0;
}
完成这样的操作,需要使用到这样的程序,在上一篇中已经提到过了。编译完成这个程序后,在储存该程序的文件夹里会有一个.exe文件。(书上说的我没怎么看懂,这里就说一下流程)
windows+r,然后在窗口中输入cmd,回车,弹出dos窗口,进入程序所在的文件夹,
在光标后输入echo_eof.exe < XXX.txt
(这里要先建立一个txt文件,在其中输入你想要打印的内容,要将这个txt文件和exe文件放在同一个文件夹中,本来我是放在桌面上的结果搞了半天。。。)
这是重定向输入的方法,重定向输出就将 < 改成 > 这里要用到上一篇中所讲到的Ctrl+z来结束输入
既然有了输入和输出,就可以完成上一篇中所提到的“复制粘贴”操作了,书上称为组合重定向,方法可以归为以下两种公式:
prog < file1 > file2
prog > file2 > file1
两种形式都是把file2作为输出,理解的时候可以和参数赋值相比较,有些系统要求中间要有留白(空格)有些不用,反正加上也不会有问题,为什么比空格开?
/* file_eof.c -- 打开一个文件,并显示该文件*/
#include <stdio.h>
#include <stdlib.h> //为了使用exit()
int main (void)
{
int ch;
FILE * fp;
char fname [50]; //储存文件名
printf("Enter the name of the file :");
scanf("%s", &fname);
fp = fopen(fname, "r"); //打开到读取文件
if (fp == NULL){ //如果打开失败了
printf("Failed to open file.Bey\n");
exit (1); //退出程序
}
//getc(fp)从打开的文件中获取一个字符
while ((ch =getc(fp)) != EOF) {
putchar(ch);
}
fclose(fp); //关闭文件
return 0;
}
这是第13章的一个程序,在这里书上提前拿出来展示了一遍,在我这种看不懂的人的眼里,就像是在装13。。。。
但是相信我很快也可以这么装13