C Primer Plus學習_29 重定向和檔案
阿新 • • 發佈:2019-01-31
重定向
程式可以通過兩種方式使用檔案,第一種方法是,顯示使用特定的函式開啟檔案、關閉檔案、讀取檔案、寫入檔案,諸如此類書中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