1. 程式人生 > >C Primer Plus學習_29 重定向和檔案

C Primer Plus學習_29 重定向和檔案

重定向

程式可以通過兩種方式使用檔案,第一種方法是,顯示使用特定的函式開啟檔案、關閉檔案、讀取檔案、寫入檔案,諸如此類書中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微笑