在編程很多時候,我們需要對數據進行操作。如何快速高效的將數據輸入到計算機並進行運用這些數據,是加快代碼開發的一個重要的手段。今天我根據別人的文章寫了一小段代碼,由於好久已經沒有運用C語言了,很多知識都有些生疏了,在使用命令的時候需要到網上進行現查,然而網上的知識浩海如煙,爲了找我需要的代碼竟然好了將近一個小時,這個效率太低了。因此,在這裏對我所查到的東西進行總結。
C語言重定向技術是通過改變輸入計算機緩存模式的一種技術,一般C語言讀取的是直接從鍵盤進行輸入的數據,
而重定向技術,可以輸入到計算機緩存的數據變爲讀取文本文件的數據;另外,通常程序的輸出爲計算機屏幕,重定向技術可以將文本輸出到指定的文件中去。通俗的講就是直接讀取文件中的數據作爲輸入,而將寫入文件作爲輸出。
我們通過重定向技術直接操作文件中的數據來代替用鍵盤輸入和向屏幕輸出,這樣就大大提高了開發的效率。
在C語言的標準庫(stdio.h)中有一個freopen函數,是用於重定向輸入和輸出流的。其函數的原型爲:
FILE *freopen(const char *filename,const char*mode,FILE *stream);
參數說明:
filename 需要重定向到的文件名(可以是絕對地址或者是相對地址);
mode 訪問文件的權限,包括讀(“r”)、寫(“w”)、追加(“a”);
stream 代表被重定向以後的流,包括輸入流(stdin)、輸出流(stdout);
返回值 如果重定向文件成功,則返回該文件的文件指針;否則,返回值爲NULL。
例程:
#include <stdio.h>
int main(int argc, char * argv[]){
FILE * file;
if((file = freopen("data.txt", "r", stdin)) ==NULL){ //重定向文件的輸入
printf("not found file\n");
}
freopen("output.txt","w",stdout); //重定向文件的輸輸出
while(scanf("%d",&a) != EOF) //從"data.txt"文件中讀取數據
printf("%d",a); //將數據寫入到"output.txt"文件中
}
return 0;
}