用檔案IO而不是stdio輸入輸出

2021-07-15 02:46:47 字數 2540 閱讀 1534

這段**是我剛寫的,不是什麼技巧性很強的東西,完全都是基礎。上午線性代數講了矩陣乘法,下午沒課,尋思著自己也好久沒寫程式了,不如就拿矩陣乘法開刀,熟悉一下c語言…順便也可以用來做線性代數的作業…=_=

恩,**有些長,我只是想多回顧一下以前的知識…這段**用到了函式、指向指標的指標、函式指標、檔案操作…加了注釋方便需要的童鞋理解…

**可能還不完善…以後學得更多了再改吧…

2009.3.23 增加記憶體釋放函式

/*

矩陣乘法c語言實現

slyar 2009.3.20

*/#include

#include

/* 給 int 型別定義別名 datatype */

typedef

int datatype;

/* 函式宣告部分 */

datatype** create(int m, int n);

void reset(datatype**, int, int);

void input(datatype**, int, int);

void output(datatype**, int, int);

void matrixmutiply(datatype**, datatype**, datatype**);

void matrixfree(datatype** , int);

/* 定義三個矩陣的行列大小 */

int row_a, col_a;

int row_b, col_b;

int row_c, col_c;

/* 定義檔案指標 */

file *fp;

int main()

/* 建立並讀入矩陣a */

fscanf(fp,"%d%d", &row_a, &col_a);

a=create(row_a, col_a);

input(a,row_a, col_a);

/* 建立並讀入矩陣b */

fscanf(fp,"%d%d", &row_b, &col_b);

b = create(row_b, col_b);

input(b,row_b, col_b);

/* 關閉輸入檔案 */

fclose(fp);

/* 以寫入方式開啟輸出檔案 out.txt */

if((fp = fopen("out.txt","w")) == null)

/* 判斷兩個矩陣能否相乘 */

if(col_a == row_b)

else

/* 建立並初始化結果矩陣c */

c = create(row_c, col_c);

reset(c, row_c, col_c);

/* 進行矩陣乘法運算 */

matrixmutiply(a, b, c);

/* 輸出結果矩陣c */

output(c, row_c, col_c);

/* 關閉輸出檔案 */

fclose(fp);

/* 釋放矩陣記憶體 */

matrixfree(a,row_a);

matrixfree(b,row_b);

matrixfree(c,row_c);

//system("pause");

return0;}

/* 為矩陣動態分配記憶體的函式 */

datatype** create(int m, int n)

return matrix;

}/* 初始化矩陣函式 */

void reset(datatype** matrix, int m, int n)

}}/* 讀入資料函式 */

void input(datatype** matrix, int m, int n)

}}/* 輸出資料函式 */

void output(datatype** matrix, int m, int n)

fprintf(fp,"\n");

}}/* 矩陣乘法運算函式 */

void matrixmutiply(datatype** a, datatype** b, datatype** c)}}

}/* 釋放矩陣記憶體函式 */

void matrixfree(datatype** matrix, int m)

free(matrix);

}

很多人可能會對in.txt內容有疑問 貼圖一張(我是在sublime text中編輯的文字plain text,儲存為了in.txt)

矩陣行 矩陣列(空格分開)

矩陣內容(空格分開)

矩陣行 矩陣列(空格分開)

矩陣內容(空格分開)

執行完成後在工作目錄產生了乙個out.txt檔案

內容如下

檔案輸入輸出I O

file主要用於在磁碟上讀寫檔案 1 在程式中,用file和jfilechoose讓使用者定義或者指定乙個檔案 2 在檔案中,用fileoutputstream和fileinputstream讀寫位元組 3 在檔案中,用dataoutputstream和datainputstream讀寫原始資料型別...

檔案輸入輸出(IO)

模式描述 r開啟乙個已有的文字檔案,允許讀取檔案。w開啟乙個文字檔案,允許寫入檔案。如果檔案不存在,則會建立乙個新檔案。在這裡,您的程式會從檔案的開頭寫入內容。如果檔案存在,則該會被截斷為零長度,重新寫入。a開啟乙個文字檔案,以追加模式寫入檔案。如果檔案不存在,則會建立乙個新檔案。在這裡,您的程式會...

fork子程序使用 exit而不是用exit函式

exit 與 exit 有不少區別在使用 fork 特別是 vfork 時變得很 突出。exit 與 exit 的基本區別在於前乙個呼叫實施與呼叫庫里使用者狀態結構 user mode constructs 有關的清除工作 clean up 而且呼叫使用者自定義的清除程式 譯者注 自定義清除程式由a...