『壹』 c 語言open()函數
windows下的文件操作,一般都用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+」 讀寫打開一個二進制文件,允許讀,或在文件末追加數據
『貳』 C語言裡面的open()函數
r+
rb+
『叄』 用C語言的open怎麼以二進制方式打開文件
thanks
『肆』 C語言中_open函數和open函數有什麼區別
c語言的庫函數並沒有open的,,,,open是linux系統提供的api.
_open是c語言庫函數。
『伍』 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);//將已打開的文件關閉;
(5)c語言open擴展閱讀:
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語言中open函數如何使用使用
C語言中open函數
作用:打開和創建文件。
簡述:
1
2
3
4
#include<fcntl.h>
intopen(constchar*pathname,intflags);
intopen(constchar*pathname,intflags,mode_tmode);
返回值:成功則返迴文件描述符,否則返回-1
對於open函數來說,第三個參數僅當創建新文件時(即 使用了O_CREAT 時)才使用,用於指定文件的訪問許可權位(access permission bits)。pathname 是待打開/創建文件的POSIX路徑名(如/home/user/a.cpp);flags 用於指定文件的打開/創建模式,這個參數可由以下常量(定義於fcntl.h)通過邏輯位或邏輯構成。
1
2
3
O_RDONLY只讀模式
O_WRONLY只寫模式
O_RDWR讀寫模式
打開/創建文件時,至少得使用上述三個常量中的一個。以下常量是選用的:
1
2
3
4
5
6
O_APPEND每次寫操作都寫入文件的末尾
O_CREAT如果指定文件不存在,則創建這個文件
O_EXCL如果要創建的文件已存在,則返回-1,並且修改errno的值
O_TRUNC如果文件存在,並且以只寫/讀寫方式打開,則清空文件全部內容(即將其長度截短為0)
O_NOCTTY如果路徑名指向終端設備,不要把這個設備用作控制終端。
O_NONBLOCK如果路徑名指向FIFO/塊文件/字元文件,則把文件的打開和後繼I/O
設置為非阻塞模式
1
(nonblockingmode)
以下三個常量同樣是選用的,它們用於同步輸入輸出
1
2
3
4
O_DSYNC等待物理I/O結束後再write。在不影響讀取新寫入的數據的
前提下,不等待
文件屬性
更新。
1
2
O_RSYNCread等待所有寫入同一區域的寫操作完成後再進行
O_SYNC等待物理I/O結束後再write,包括更新文件屬性的I/O
open返回的文件描述符一定是最小的未被使用的描述符。
如果 NAME_MAX(文件名最大長度,不包括'\0')是 14,而我們想在當前目錄下創建文件名長度超過 14 位元組的文件,早期的 System V 系統(如 SVR2)會截斷超出部分,只保留前 14 個位元組;而由 BSD 衍生的(BSD-derived)系統會返回錯誤信息,並且把 errno 置為 ENAMETOOLONG。
POSIX.1 引入常量 _POSIX_NO_TRUNC 用於決定是否截斷長文件名/長路徑名。如果_POSIX_NO_TRUNC 設定為禁止截斷,並且路徑名長度超過 PATH_MAX(包括 '\0'),或者組成路徑名的任意文件名長度超過 NAME_MAX,則返回錯誤信息,並且把 errno 置為 ENAMETOOLONG。
『柒』 C語言里的的fopen和open的區別
fopen是調用c庫,屬於c語言級別的函數。open調用系統庫,屬於系統級別的函數
『捌』 C語言open及write read的問題
if(fd=open(argv[1],O_CREAT|O_RDWR,0755)<0)
這句有問題
賦值運算符的優先順序 低於 比較運算符
因此open的返回值a大於0,a<0為假,因此fd最後被賦值為0
『玖』 1、編寫一個C語言程序,用open函數在當前目錄下創建一個文件test.txt,然後將數字1~100按順序寫入文件,
#include <stdio.h>
#include <stdlib.h>
int open();
void main()
{
open();
}
int open()
{
FILE *fp = fopen("test.txt","w+");
for(int i=1;i<101;i++)
{
char ch[1];
sprintf(ch,"%d",i); // int型轉為char型,還可以用itoa函數但是這個函數不是標准庫的函數不利於移植,所以用sprintf
fprintf(fp,ch);
fprintf(fp," ");
}
return 0;
}
『拾』 c語言open()函數問題
O_TRUNC的意思是:如果文件存在,而且為只讀或只寫成功打開,就把文件長度截短為0。
明白了這段話,你就知道你錯在哪了。