① linux 中 open和fopen的區別
linux中open和fopen的區別主要有以下四點:
1、來源
從來源的角度看,兩者能很好地區分開,這也是最顯而易見的區別:
①open是Unix系統調用消唯好函數,返回的是文件描述符,它是文件在文件描述符表裡的索引;
②fopen是ANSIC標准中的c語言庫函數,在不同的系統中應該調用不同的內核api。返回的是一個指向文件結構拿鉛的指針。
2、移植性
這一點從上面的來源可以推斷出來,fopen是C標准函數,因此擁有良好的移植性,而open是Unix系統調用,移植性有限。如Windows下相似的功能使用API函數CreateFile。
3、適用范圍
①open返迴文件描述符,而文件描述符是Unix系統下的一個重要概念,Unix下的一切設備都是以文件的形式操作。如網路套接字、硬體設備等。當然包括操作普通正規文件。
②fopen是用來操縱普通正規文件。
4、文件IO層次
如果從文件IO的角度來看山弊,前者屬於低級IO函數,後者屬於高級IO函數。低級和高級的簡單區分標準是:誰離系統內核更近。低級文件IO運行在內核態,高級文件IO運行在用戶態。
② linux 中 open和fopen的區別
open 是系統調用 返回的是文件句柄,文件的句柄是文件在文件描述副表裡的索引,fopen是C的庫函數,返回的是一個指向文件結構的指輪備針。
fopen是ANSIC標准中的C語言肢敗庫函數,在不同的系統中應該調用不同的內核api
linux中的系統函數是open,fopen是其封裝函數
open和fopen的區別:
1、open屬於低級IO,fopen是高級IO。
2、open返回一個文件描述符,fopen返回一個文件指針。
3、open無緩沖,fopen有緩沖。
4、open與 read, write 等配合使用, fopen與 fread, fwrite等配合使用。臘飢毀
5、fopen是在open的基礎上擴充而來的,在大多數情況下,用fopen。
③ Linux系統下C語言fopen函數幾個小問題
fopen函數是在當前目錄下打開一個文件,其調用弊則拍的一般形式為:
文件指針名=fopen(文件名,使用文件方式);
「文件指針名」必須是被聲明為FILE 類型的指針盯李變數;
「文件名」是被打開文件的文件名;
「使用文件方式」是指文件的類型和操作要求;
「文件名」是字元串常量或字元數組。
例如:
FILE *fp;
fp=fopen("file a","r");
其意義是在當前目租羨錄下打開文件file a,只允許進行「讀」操作,並使fp指向該文件。
④ c語言標准庫fopen函數如何打開中文文件名的文件
文件主名和擴展名可以使用的字元是:
英文字母:A—z(大小寫等價)
數
字:0—9
漢
字
特殊符號:$#&@()-[]^~等。
各種控制字元和下列字元不能用在文件名中:<
>
/
\
:
"
*
?
//這些字元已做它用
文件名字母大小寫的區分:
DOS下文件名不區分大小寫。
在Windows系統下,顯示區分大小寫,讀寫操作時不區分。
在類Unix/Linux系統下,區分字母大小寫。
文件名長度的限制:
DOS下文件名長度應為
8.3
即8位文件名3位擴展名。
在Windows系統下,可以多個擴展名,以最後一個為准,文件名長度255。
在類Unix/Linux系統下,文件名長度255,帶路徑的長度1024,也有系統4096。
文件名可以直接寫進去函數里,也可以放在變數里:
FILE
*fp;
char
namein[]="abc.txt";
fp=fopen(namein,"r");
或
fp=fopen("abc.txt","r");
文件名若帶路徑,單反斜杠要寫成雙反斜杠,例如:
char
namein[]="C:\\path\\abc.txt";
⑤ linux下c語言讀取文件時讓其輸出一行停頓幾秒的問題
頭文件添加:
#include <unistd.h>
#include <stdlib.h>
然後,在輸出換行後面加上語句
int ret ;
ret=alarm(2) ; /*調用alarm定時器函數*/
pause() ;
這樣就能實現你要的功能了。