欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言文件操作 fopen, fclose, mkdir詳解

 更新時間:2016年03月15日 10:52:30   投稿:hebedich  
本文給大家詳細介紹了下C語言的文件操作函數(shù)fopen, fclose, mkdir的用法及示例,非常的簡單實用,有需要的小伙伴可以參考下。

1.建文件夾

int _mkdir(const char *path,mode_t mode);
函數(shù)名: _mkdir
功 能: 建立一個目錄
用 法: int _mkdir( const char *dirname );
頭文件庫:direct.h
返回值:創(chuàng)建一個目錄,若成功則返回0,否則返回-1

=====================================================

2.打開文件fopen()

函數(shù)功能: 打開一個文件
函數(shù)原型:FILE * fopen(const char * path,const char * mode);
所需庫: <stdio.h>
返回值: 文件順利打開后,指向該流的文件指針就會被返回。如果文件打開失敗則返回NULL,并把錯誤代碼存在errno 中。

一般而言,打開文件后會作一些文件讀取或寫入的動作,若打開文件失敗,接下來的讀寫動作也無法順利進行,所以一般在fopen()后作錯誤判斷及處理。

if((fin = fopen(“a.txt”,”r”)) == NULL)
printf(“Open file error.\n”);

參數(shù)說明:
參數(shù)path字符串包含欲打開的文件路徑及文件名,參數(shù)mode字符串則代表著流形態(tài)。
mode有下列幾種形態(tài)字符串: ?。ǔS玫木颓皫讉€,后面用到了再查,不用記)
r 以只讀方式打開文件,該文件必須存在。
w 打開只寫文件,若文件存在則文件長度清為0,即該文件內容會消失。若文件不存在則建立該文件。
a 以附加的方式打開只寫文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數(shù)據會被加到文件尾,即文件原先的內容會被保留。(EOF符保留)

rb 為輸入打開一個二進制文件。
wb 只寫打開或新建一個二進制文件;只允許寫數(shù)據。
ab 向二進制文件尾添加數(shù)據

r+ 以可讀寫方式打開文件,該文件必須存在。
w+ 打開可讀寫文件,若文件存在則文件長度清為零,即該文件內容會消失。若文件不存在則建立該文件。
a+ 以附加方式打開可讀寫的文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數(shù)據會被加到文件尾后,即文件原先的內容會被保留。 (原來的EOF符不保留)

rb+ 讀寫打開一個二進制文件,只允許讀數(shù)據。
wb+ 讀寫打開或建立一個二進制文件,允許讀和寫。
ab+ 讀寫打開一個二進制文件,允許讀或在文件末追加數(shù)據。

rt+ 讀寫打開一個文本文件,允許讀和寫。
wt+ 讀寫打開或著建立一個文本文件;允許讀寫。
at+ 讀寫打開一個文本文件,允許讀或在文本末追加數(shù)據。
上述的形態(tài)字符串都可以再加一個b字符,如rb、w+b或ab+等組合,加入b 字符用來告訴函數(shù)庫打開的文件為二進制文件,而非純文字文件。
不過在POSIX系統(tǒng),包含Linux都會忽略該字符。由fopen()所建立的新文件會具有S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)權限,此文件權限也會參考umask 值。
有些C編譯系統(tǒng)可能不完全提供所有這些功能,有的C版本不用”r+”,”w+”,”a+”,而用”rw”,”wr”,”ar”等,讀者注意所用系統(tǒng)的規(guī)定。

==========================================================

3.關閉文件 fclose()

在使用完一個文件后應該關閉它,以防止它再誤用,關閉就是指文件指針變量不指向該文件,也就是文件指針變量與文件脫鉤,此后不能再通過該指針對原來與其相聯(lián)系的文件進行讀寫操作。除非再次打開,使該指針變量重新指向該文件。

用 fclose 函數(shù)關閉文件,fclose 函數(shù)調用的一般形式為

fclose(文件指針);

例如:

fclose(fp);

應該養(yǎng)成在程序終止之前關閉所有文件的習慣,如果不關閉文件將丟失數(shù)據。因為如前所述,在向文件寫數(shù)據時,是先將數(shù)據輸?shù)骄彌_區(qū),待緩沖區(qū)充滿后才正式輸出給文件,如果當數(shù)據未充滿緩沖區(qū),而程序結束運行,就會將緩沖區(qū)中的數(shù)據丟失,用 fclose 函數(shù)關閉文件,可以避免這個問題,它先把緩沖區(qū)中的數(shù)據輸出到磁盤文件,然后才釋放文件指針變量。

fclose 函數(shù)也帶回一個值,當順利地執(zhí)行了關閉操作,則返回值為 0 ,否則返回 EOF (-1) 。可以用 ferror 函數(shù)來測試。
==============================================================
下面用一個程序來說明上面幾個函數(shù)用法:

將a.txt拷貝到/test目錄下,名字也為a.txt

C++

/**
 * Author: Gneveek
 * Data: 2011-10-6
 * Descripition: Clock Chen's Homework : File operation #1
 * 一、將a.txt拷貝到/test目錄下,名字也為a.txt
 */ 
#include <stdio.h>
#include <direct.h> //用 _mkdir()創(chuàng)建一個文件夾(目錄) 
int main()
{
 _mkdir("test");
 
 char c;
 FILE *fin, *fout;
 if((fin = fopen("a.txt","r")) == NULL)
 printf("I'm so sorry,Open file error.\n");
 if((fout = fopen("test\\a.txt","w")) == NULL) //以 w 方式,只能用于往文件中寫,如果不存在,則以指定的文件名新建一個文件
 printf("I'm so sorry,Open file error.\n");
 
 while((c = fgetc(fin)) != EOF)
 fputc(c,fout); 
 
 fclose(fin);
 fclose(fout);
 return 0;
}

 

================================================================

4.判斷文件是否存在和是否可讀可寫

int access(const char *pathname,int mode);

pathname:是文件名稱
mode是我們要判斷的屬性.可以取以下值或者是他們的組合:
R_OK文件可以讀
W_OK文件可以寫
X_OK文件可以執(zhí)行
F_OK文件存在.

當我們測試成功時,函數(shù)返回0,否則如果有一個條件不符時,返回-1.

用一個程序實例來認識這個函數(shù):

輸入一個文件名(在命令行中輸入),判斷該文件是否存在,并且可讀,不存在提示不存在,不可讀提示不可讀,如果存在并可讀,則在當前目錄下,創(chuàng)建一個目錄test,并將該文件拷貝到test中

C++

/**
 * Author: Gneveek
 * Data: 2011-10-6
 * Descripition: Clock Chen's Homework : File operation #2
 *二、輸入一個文件名(在命令行中輸入),判斷該文件是否存在,并且可讀,
 *不存在提示不存在,不可讀提示不可讀,如果存在并可讀,
 *則在當前目錄下,創(chuàng)建一個目錄test,并將該文件拷貝到test中
 */ 
#include <stdio.h>
#include <io.h>
#include <direct.h> 
#include <string.h>
 
int main()
{
 FILE *fin, *fout;
 char filename[256]; 
 char pathname[256] = "test\\";  
 scanf("%s",filename);
 if(access(filename,F_OK) == -1) //判斷存在與否 
 printf("This file does not exist!\n");
 else if(access(filename,R_OK) == -1) //如果存在,判斷可讀否 
 printf("Cann't Read!\n");
 else               //到這里,說明即存在又可讀 
 {
 char c;
 _mkdir("test"); 
 
 strcat(pathname,filename);  
 
 fin = fopen(filename,"r"); 
 fout = fopen(pathname,"w");
 
 while((c = fgetc(fin)) != EOF)
  fputc(c,fout);
 }
 return 0;
}

相關文章

  • 一篇文章弄懂C++左值引用和右值引用

    一篇文章弄懂C++左值引用和右值引用

    左值(lvalue)和右值(rvalue)是 c/c++ 中一個比較晦澀基礎的概念,這篇文章主要給大家介紹了關于如何通過一篇文章弄懂C++左值引用和右值引用的相關資料,需要的朋友可以參考下
    2021-07-07
  • C++ 匈牙利算法案例分析詳解

    C++ 匈牙利算法案例分析詳解

    這篇文章主要介紹了C++ 匈牙利算法案例分析詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-08-08
  • QT使用QComBox和QLineEdit實現(xiàn)模糊查詢功能

    QT使用QComBox和QLineEdit實現(xiàn)模糊查詢功能

    模糊查詢是指根據用戶輸入的文本,在下拉框的選項中進行模糊匹配,并動態(tài)地顯示匹配的選項,本文將使用QComBox和QLineEdit實現(xiàn)模糊查詢功能,需要的可以參考下
    2023-11-11
  • QT5中使用SQLite的實現(xiàn)方法

    QT5中使用SQLite的實現(xiàn)方法

    SQLite是一款開源輕量級的數(shù)據庫軟件,本文主要介紹了QT5中使用SQLite的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • 如何用矩形法(梯形法)求定積分

    如何用矩形法(梯形法)求定積分

    思路就是將積分區(qū)間劃分成n等份,然后將這n等份近似看成矩形(或梯形),然后對所有的矩形(或梯形)的面積進行求和
    2013-09-09
  • C語言實現(xiàn)掃雷算法簡易版

    C語言實現(xiàn)掃雷算法簡易版

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)掃雷算法簡易版,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • C++ 使用PrintWindow實現(xiàn)窗口截圖功能

    C++ 使用PrintWindow實現(xiàn)窗口截圖功能

    這篇文章主要介紹了C++ 如何使用PrintWindow實現(xiàn)窗口截圖功能,文中示例代碼非常詳細,幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-08-08
  • c++制作的時間函數(shù)類

    c++制作的時間函數(shù)類

    本文給大家分享的是一個個人使用C++編寫的時間函數(shù)類,主要是實現(xiàn)了類的定義和調用,相比較來說還算比較復雜的時間類了,推薦給小伙伴們,有需要的朋友可以參考下。
    2015-03-03
  • C++?構造函數(shù)和析構函數(shù)(Constructors?&?Destructors)詳解

    C++?構造函數(shù)和析構函數(shù)(Constructors?&?Destructors)詳解

    由于global?object的誕生比程序進入更早點,所以global?object的constructor執(zhí)行的時間更早于程序的進入點,所謂的default?constructor就是沒有指定任何的參數(shù)的constructor,這篇文章主要介紹了C++?構造函數(shù)和析構函數(shù)的相關知識,需要的朋友可以參考下
    2024-05-05
  • C++實現(xiàn)圖的鄰接矩陣存儲和廣度、深度優(yōu)先遍歷實例分析

    C++實現(xiàn)圖的鄰接矩陣存儲和廣度、深度優(yōu)先遍歷實例分析

    這篇文章主要介紹了C++實現(xiàn)圖的鄰接矩陣存儲和廣度、深度優(yōu)先遍歷,實例分析了C++實現(xiàn)圖的遍歷技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04

最新評論