當前位置:首頁 » 編程語言 » c語言中fopen

c語言中fopen

發布時間: 2022-05-22 02:34:13

c語言Fopen函數的用法

fopen函數用來打開一個文件,其調用的一般形式為:
文件指針名=fopen(文件名,使用文件方式);
其中,
「文件指針名」必須是被說明為FILE 類型的指針變數;
「文件名」是被打開文件的文件名;
「使用文件方式」是指文件的類型和操作要求。
「文件名」是字元串常量或字元串數組。
例如:
FILE *fp;
fp=("file a","r");
其意義是在當前目錄下打開文件file a,只允許進行「讀」操作,並使fp指向該文件。
又如:
FILE *fphzk
fphzk=("c:\\hzk16","rb")
其意義是打開C驅動器磁碟的根目錄下的文件hzk16,這是一個二進制文件,只允許按二進制方式進行讀操作。兩個反斜線「\\ 」中的第一個表示轉義字元,第二個表示根目錄。
使用文件的方式共有12種,下面給出了它們的符號和意義。
文件使用方式
意義
「rt」
只讀打開一個文本文件,只允許讀數據
「wt」
只寫打開或建立一個文本文件,只允許寫數據
「at」
追加打開一個文本文件,並在文件末尾寫數據
「rb」
只讀打開一個二進制文件,只允許讀數據
「wb」
只寫打開或建立一個二進制文件,只允許寫數據
「ab」
追加打開一個二進制文件,並在文件末尾寫數據
「rt+」
讀寫打開一個文本文件,允許讀和寫
「wt+」
讀寫打開或建立一個文本文件,允許讀寫
「at+」
讀寫打開一個文本文件,允許讀,或在文件末追加數據
「rb+」
讀寫打開一個二進制文件,允許讀和寫
「wb+」
讀寫打開或建立一個二進制文件,允許讀和寫
「ab+」
讀寫打開一個二進制文件,允許讀,或在文件末追加數據
對於文件使用方式有以下幾點說明:
1) 文件使用方式由r,w,a,t,b,+六個字元拼成,各字元的含義是:
r(read): 讀
w(write): 寫
a(append): 追加
t(text): 文本文件,可省略不寫
b(banary): 二進制文件
+: 讀和寫
2) 凡用「r」打開一個文件時,該文件必須已經存在,且只能從該文件讀出。
3) 用「w」打開的文件只能向該文件寫入。若打開的文件不存在,則以指定的文件名建立該文件,若打開的文件已經存在,則將該文件刪去,重建一個新文件。
4) 若要向一個已存在的文件追加新的信息,只能用「a」方式打開文件。但此時該文件必須是存在的,否則將會出錯。
5) 在打開一個文件時,如果出錯,fopen將返回一個空指針值NULL。在程序中可以用這一信息來判別是否完成打開文件的工作,並作相應的處理。因此常用以下程序段打開文件:
6) if((fp=fopen("c:\\hzk16","rb")==NULL)
{
printf("\nerror on open c:\\hzk16 file!");
getch();
exit(1);
}
這段程序的意義是,如果返回的指針為空,表示不能打開C盤根目錄下的hzk16文件,則給出提示信息「error on open c:\ hzk16 file!」,下一行getch()的功能是從鍵盤輸入一個字元,但不在屏幕上顯示。在這里,該行的作用是等待,只有當用戶從鍵盤敲任一鍵時,程序才繼續執行,因此用戶可利用這個等待時間閱讀出錯提示。敲鍵後執行exit(1)退出程序。
7) 把一個文本文件讀入內存時,要將ASCII碼轉換成二進制碼,而把文件以文本方式寫入磁碟時,也要把二進制碼轉換成ASCII碼,因此文本文件的讀寫要花費較多的轉換時間。對二進制文件的讀寫不存在這種轉換。
8) 標准輸入文件(鍵盤),標准輸出文件(顯示器),標准出錯輸出(出錯信息)是由系統打開的,可直接使用。

❷ 關於c語言中fopen的打開方式

這個網站的資料大部分是windows和linux通用的。
http://man.chinaunix.net/develop/c&c++/linux_c/default.htm

fopen(打開文件)
相關函數
open,fclose
表頭文件
#include<stdio.h>
定義函數
FILE * fopen(const char * path,const char * mode);
函數說明
參數path字元串包含欲打開的文件路徑及文件名,參數mode字元串則代表著流形態。
mode有下列幾種形態字元串:
r 打開只讀文件,該文件必須存在。
r+ 打開可讀寫的文件,該文件必須存在。
w 打開只寫文件,若文件存在則文件長度清為0,即該文件內容會消失。若文件不存在則建立該文件。
w+ 打開可讀寫文件,若文件存在則文件長度清為零,即該文件內容會消失。若文件不存在則建立該文件。
a 以附加的方式打開只寫文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數據會被加到文件尾,即文件原先的內容會被保留。
a+ 以附加方式打開可讀寫的文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數據會被加到文件尾後,即文件原先的內容會被保留。
上述的形態字元串都可以再加一個b字元,如rb、w+b或ab+等組合,加入b 字元用來告訴函數庫打開的文件為二進制文件,而非純文字文件。不過在POSIX系統,包含Linux都會忽略該字元。由fopen()所建立的新文件會具有S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)許可權,此文件許可權也會參考umask 值。
返回值
文件順利打開後,指向該流的文件指針就會被返回。若果文件打開失敗則返回NULL,並把錯誤代碼存在errno 中。
附加說明
一般而言,開文件後會作一些文件讀取或寫入的動作,若開文件失敗,接下來的讀寫動作也無法順利進行,所以在fopen()後請作錯誤判斷及處理。
範例
#include<stdio.h>
main()
{
FILE * fp;
fp=fopen(「noexist」,」a+」);
if(fp= =NULL) return;
fclose(fp);
}

❸ c語言fopen怎麼用

fopen一般與buf搭配使用,通過與fgets函數配合使用,將文件中的字元串讀到buf中,這樣達到讀出文件內容的目的代碼如下:

FILE tf=NULL;//定義一個文件指著,用於判斷fopen是否打開成功,並初始化為空;

char buf[1024]={0};//定義一個長度為1024的數組,用於存放文件的內容;

tf=fopen("c:example.txt","r");//打開c盤指定文件,並以只讀的形式打開,避免破壞原文件,將fopen的返回值放在指針tf中,若打開成功,則返回成功的指針,打開不成功則返回空;

if(tf != NULL)//判斷是否成功,不等於NULL則表示成功;

{

if(fgets(buf,1024,tf) != NULL)//將指向c盤文件的指針的內容賦給buf,長度為1024,並判斷是否獲取成功;

{

printf("buf=%s ",buf);//將成功獲取的字元串顯示在屏幕上;

}

}

fclose(tf);//將已打開的文件關閉;

(3)c語言中fopen擴展閱讀:

fopen的工作原理

FILE *fp;

fp=fopen("filename.txt","w");

首先檢測filename.txt是否存在,如果不存在則在磁碟 創建該文件,然後在內存開辟區域(應該是緩沖區)准備寫該文件

調用fclose時,將內存中的內容寫入到磁碟中去

測試(filename.txt不存在):

#include <stdio.h>

#include <stdlib.h>

int main()

{

FILE *fp1,*fp2;

fp1=fopen("filename.txt","w");

if(fp1==NULL)

{

printf("fp1 open failed!/n");

}

else

{

printf("fp1 open success!/n");

}

fp2=fopen("filename.txt","r");

if(fp2==NULL)

{

printf("fp2 open failed!/n");

}

else

{

printf("fp2 open success!/n");

}

fclose(fp1);

fclose(fp2);

return 0;

}

輸出:

fp1 open success!

fp2 open success!

說明文件操作不是互斥的,而且以寫方式打開文件,如果文件不存在,先在磁碟創建該文件

加入寫入語句:

#include <stdio.h>

#include <stdlib.h>

int main()

{

FILE *fp1,*fp2;

fp1=fopen("filename.txt","w");

if(fp1==NULL)

{

printf("fp1 open failed!/n");

}

else

{

printf("fp1 open success!/n");

fputs("abcdef",fp1);

}

fp2=fopen("filename.txt","w");

if(fp2==NULL)

{

printf("fp2 open failed!/n");

}

else

{

printf("fp2 open success!/n");

fputs("ABC/n",fp2);

}

fclose(fp1);

fclose(fp2);

return 0;

}

打開filename.txt文件:

ABC

f

說明後關閉的,刷新了磁碟數據

參考資料來源:fopen-網路

❹ C語言fopen函數如何執行的問題急急急!!!

//你的代碼中有兩處錯誤,如下備注
#include<stdio.h>
#include<stdlib.h>
#pragma warning(disable : 4996)
int main(void)
{
char name[100];
char ch;
int i=0;
FILE* fp;
int count=0;
printf("請輸入文件名:");
// while 裡面括弧位置錯誤,以下是改過來的
while ((ch = getchar()) != '\n')
{
name[i] = ch;
i++;
}
name[i] = '\0'; // 這里錯了, 是 i不是i+1
if ((fp = fopen(name, "r")) == NULL)
{
printf("Can't open %s\n", name);
exit(EXIT_FAILURE);
}
while ((ch = getc(fp)) != EOF)
{
putc(ch, stdout);
count++;
}
fclose(fp);
printf("File %s has %lu characters\n", name,count);
return 0;
}

❺ C語言中fopen函數打開文件後,文件以何種方式讀入內存

現在大多數的系統採用分頁機制,在打開文件成功後,文件並沒有載入進入內存,而是內核生成了一個文件描述符,文件描述符含有一個指向文件indoe結構的指針,在這個結構中存有文件真正的節點信息和位置。當讀取的時候,cpu首先判定需要讀取的位置是否在內存上,如果再則直接讀取(沒有所謂的按行讀取一說,按行讀取不過是找文件中的換行標而已,當讀到換行符的時候返回結果),如果不在內存上,則通過內存管理器進行載入,實際上,無論你是讀取一個字元還是一行,載入的大小是固定的,比如系統機制是載入1M,當你文件大於1M時也只載入1M,當不夠時全部載入。對不不同系統方式不同。(當然系統如果對讀文件有特殊的優化也不同),當你讀取之後,文件是繼續留在內存還是釋放,這里有另一套極其復雜的機制在管理。因為在你讀第一行和第二行的時間里,還有許多事情在並發的執行。

❻ c語言中fopen("data","ab+") data含義是什麼

這個是KEIL給51單片機的定義C語言里沒有這個關鍵字data固定指51的0x00-0x7f的128個RAM,可以用acc直接讀寫的,速度最快,生成的代碼也最小。

❼ C語言中 fp = fopen(filename, 「rb」); 那個rb是什麼意思啊

C語言中 fp = fopen(filename, 「rb」),里的rb是指:打開一個二進制文件,文件必須存在,只允許讀。

fphzk=fopen("c:\hzk16","rb")是打開C驅動器磁碟的根目錄下的文件hzk16,按二進制方式進行讀操作。兩個反斜線「\ 」中的第一個表示轉義字元,第二個表示根目錄。

(7)c語言中fopen擴展閱讀

fp = fopen(filename, 「rb」延伸

1、resourcefopen ( string filename, string mode, [ bool use_include_path, [resource zcontext]] ),fopen() 函數打開一個文件或 URL。如果 fopen() 失敗,它將返回 FALSE 並附帶錯誤信息。您可以通過在函數名前面添加一個 '@' 來隱藏錯誤輸出。

2、fopen() 將 filename 指定的名字資源綁定到一個流上。如果 filename 是 "scheme://..." 的格式,則被當成一個 URL,PHP 將搜索協議處理器(也被稱為封裝協議)來處理此模式。

3、如果該協議尚未注冊封裝協議,PHP 將發出一條消息來幫助檢查腳本中潛在的問題並將 filename 當成一個普通的文件名繼續執行下去。

❽ c語言用fopen時,需要加特殊的 頭文件嗎

使用fopen時,只需將頭文件#include<stdio.h>添加進源文件即可。


函數原型:FILE *fopen(char *filename, char *mode);

功 能:以mode指定的方式打開名為filename的文件

返 回 值:成功返迴文件指針;否則,返回0


舉例如下:

#include<stdio.h>//fopen所在的頭文件
voidmain()
{
FILE*fp;//定義一個文件指針fp
fp=fopen("text1.txt","r");//以只讀的方式打開文件名為text1.txt的文件
........
fclose(fp);//操作完畢後關閉文件
}

❾ c語言中用fopen 模式為W建立的文件,保存到哪裡去了

保存在你現在的目錄下,如果你建立的是二進制文件是打不開的,你可以指定你建立文件的類型
例如fopen("myfile.txt","w");這樣建立的文件就可以用記事本打開,你也可以指定你要建立文件的路徑,例如fopen("c:\new\myfile.txt","w")

❿ C語言,fopen的問題

哈哈。看懂你的意思了。
scanf你輸入的東西,就是被c語言當成字元串來處理,會自己加上「」。
而你在fopen的實參中,你需要加上「」,才會被c語言當成是字元串。

熱點內容
怎麼改密碼鎖 發布:2025-02-13 23:47:39 瀏覽:852
androidbitmap獲取大小 發布:2025-02-13 23:47:38 瀏覽:559
怎麼把升級鴻蒙系統變回安卓 發布:2025-02-13 23:36:07 瀏覽:595
偶校驗c語言 發布:2025-02-13 23:22:52 瀏覽:937
芒果如何提取離線緩存視頻 發布:2025-02-13 23:16:12 瀏覽:793
王者榮耀微信區安卓哪裡分低 發布:2025-02-13 23:14:10 瀏覽:658
安裝linuxvmwaretools 發布:2025-02-13 22:56:02 瀏覽:8
浪潮伺服器如何引導系統安裝光碟 發布:2025-02-13 22:56:02 瀏覽:112
java多線程的同步 發布:2025-02-13 22:46:15 瀏覽:920
軟體使用許可權里存儲關閉還是打開 發布:2025-02-13 22:46:11 瀏覽:382