C為什麼文件指針打不開文件名
A. C語言文件為什麼老提示無法打開啊!誰能告訴下謝謝!
C語言代碼文件有2中格式:
頭文件 .h
源文件 .c
如果提示無法打開,就說明你沒有裝開發工具,比如 vitrual stdio系列的IDE.
實際上.h .c文件格式的,使用記事本就可以打開的.
B. C語言 如何通過文件指針獲得文件名
在tc20中,一旦你成功打開一個文件,他將返回一個文件指針。
FILE*fp;
fp=fopen("abc.dat",文件狀態(如w,r,r+));
當上面的操作成功後文件指針fp就會賦予你打開文件的最基本信息!
FILE結構在TurboC在stdio.h文件中有以下的文件類型聲明:
typedefstruct
{
shortlevel;/*緩沖區「滿」或「空」的程度*/
unsignedflags;/*文件狀態標志*/
charfd;/*文件描述符(句柄)*/
unsignedcharhold;/*如無緩沖區不讀取字元*/
shortbsize;/*緩沖區的大小*/
unsignedchar*buffer;/*數據緩沖區的位置*/
unsignedar*curp;/*指針,當前的指向*/
unsignedistemp;/*臨時文件,指示器*/
shorttoken;/*用於有效性檢查*/
}FILE;
為管理你打開的文件,操作系統為所有的文件創建一個打開文件信息的結構數組---文件控制塊(FCB),而文件描述符就承擔了訪問與之對應的文件控制塊的使命,他在c中就充當文件句柄。每一個文件都需要唯一的一個標識,這樣才能管理若干個文件
FCB他存貯這你所有打開文件的信息,而只有通過文件句柄才能訪問與之對應的FCB,從而訪問你的文件.
文件句柄,就是FCB結構數組的下標
所以,通過文件指針獲得文件名的操作路線:
FILE*fp;
charfd=fp->fd;
FCB*fcb;
char*filiname=fcb[fd].filiname
利用FCB(文件控制塊)操作的例子見:
http://www.asme.net/blog/user/postcontent.jsp?neighborId=8747&kindLevel=1&kindId=24655&postId=40710&readSg=1
C. C語言是否可以通過文件指針得到文件名
可以通過指針訪問文件,但是不可以反過來獲取文件名
D. 為什麼我編寫程序,在文件中打不開,是可以執行的,文件後綴是.c
源程序擴展名: .c
目標程序擴展名: .obj
可執行程序擴展名: .exe
查看這些文件的擴展名,可以通過在C編譯環境中新建一個完整的工程,輸入程序完成編譯與連接後就可以得到以上那些文件,在工程文件中可以查看。
E. C中文件打不開是怎麼回事
說明要麼是不存在這個文件
要麼是你的文件的路徑不對,我給你個例子看看
#include<iostream>
usingnamespacestd;
voidcreat()//創建文件並且輸入信息
{
inttel;
charname[20],add[20];
//charname[10];
FILE*fp;
cout<<"請輸入要創建的文件的名稱 ";
cin>>name;
if((fp=fopen(name,"a+"))==NULL)
{
cout<<"cannotopenthisfile ";
exit(0);
}
fprintf(fp,"%-10s%-20s%-50s ","姓名","電話號碼","住址");
cout<<"請依次輸入姓名、電話號碼、住址(以0結束) ";
cin>>name;
while(strcmp(name,"0"))
{
cin>>tel>>add;
fprintf(fp,"%-10s%-20d%-50s ",name,tel,add);
cin>>name;
}
fclose(fp);
}
voidoutput()//輸出文件的內容
{
FILE*fp;
chartel[20];
charname[20],add[20];
cout<<"請輸入要輸出的文件的名稱 ";
cin>>name;
if((fp=fopen(name,"r"))==NULL)
{
cout<<"cannotopenthisfile ";
exit(0);
}
cout<<" 通訊錄 ";
while(!feof(fp))
{
fscanf(fp,"%s%s%s ",name,tel,add);
printf("%-10s%-20s%-50s ",name,tel,add);
}
fclose(fp);
}
voidmain()
{
creat();
output();
}
F. C語言 打開文件中文名長 就打不開
這樣的情況多半是系統編碼的問題,是gb編碼和unicode編碼的不兼容導致的問題
G. C語言fopen打不開文件
①文件不存在;
②文件名錯誤,打開文件的名字應該寫成"c:\\file.txt",而不是"c:\file.txt";
③代碼錯誤;
fopen函數用於打開文件並獲取文件的指針,以便對文件進行操作。
函數原型:FILE
*
fopen(const
char
*
path,const
char
*
mode);
參數:path字元串包含欲打開的文件路徑及文件名,參數mode字元串則代表著流形態。
mode有下列幾種形態字元串:
r
以只讀方式打開文件,該文件必須存在。
r+
以可讀寫方式打開文件,該文件必須存在。
rb+
讀寫打開一個二進制文件,允許讀寫數據,文件必須存在。
w
打開只寫文件,若文件存在則文件長度清為0,即該文件內容會消失。若文件不存在則建立該文件。
w+
打開可讀寫文件,若文件存在則文件長度清為零,即該文件內容會消失。若文件不存在則建立該文件。
a
以附加的方式打開只寫文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數據會被加到文件尾,即文件原先的內容會被保留。(EOF符保留)
a+
以附加方式打開可讀寫的文件。若文件不存在,則會建立該文件,如果文件存在,寫入的數據會被加到文件尾後,即文件原先的內容會被保留。
(原來的EOF符不保留)
wb
只寫打開或新建一個二進制文件;只允許寫數據。
wb+
讀寫打開或建立一個二進制文件,允許讀和寫。
ab+
讀寫打開一個二進制文件,允許讀或在文件末追加數據。
上述的形態字元串都可以再加一個b字元,如rb、w+b或ab+等組合,加入b
字元用來告訴函數庫以二進制模式打開文件。如果不加b,表示默認加了t,即rt,wt,其中t表示以文本模式打開文件。由fopen()所建立的新文件會具有S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH(0666)許可權,此文件許可權也會參考umask值。
有些C編譯系統可能不完全提供所有這些功能,有的C版本不用"r+","w+","a+",而用"rw","wr","ar"等,讀者注意所用系統的規定。
返回值:
文件順利打開後,指向該流的文件指針就會被返回。如果文件打開失敗則返回NULL,並把錯誤代碼存在errno中。
一般而言,打開文件後會做一些文件讀取或寫入的動作,若打開文件失敗,接下來的讀寫動作也無法順利進行,所以一般在fopen()後作錯誤判斷及處理。
示例:以只讀方式打開文件
#include<stdio.h>
#define
F_PATH
"d:\\myfile\\file.dat"
int
main(void)
{
FILE*fp=NULL;//需要注意
fp=fopen(F_PATH,"r");
if(NULL==fp)
{
return
-1;//要返回錯誤代碼
}
fclose(fp);
fp=NULL;//需要指向空,否則會指向原打開文件地址
return
0;
}
H. 【c語言】為什麼這個c程序有的時候打不開文件
加密函數和解密函數都小有改變,已經可以工作了。
I. C語言,為什麼運行結果為打不開文件
說明文件不存在。
檢查一下目錄下面是不是有eng.txt這個文件
確定你認為的程序目錄是真正的程序目錄(通過列印argv[0])