C語言中指定文件路徑的三種方法:

“只有客戶發(fā)展了,才有我們的生存與發(fā)展!”這是創(chuàng)新互聯(lián)公司的服務(wù)宗旨!把網(wǎng)站當(dāng)作互聯(lián)網(wǎng)產(chǎn)品,產(chǎn)品思維更注重全局思維、需求分析和迭代思維,在網(wǎng)站建設(shè)中就是為了建設(shè)一個(gè)不僅審美在線,而且實(shí)用性極高的網(wǎng)站。創(chuàng)新互聯(lián)對(duì)成都做網(wǎng)站、網(wǎng)站建設(shè)、網(wǎng)站制作、網(wǎng)站開發(fā)、網(wǎng)頁設(shè)計(jì)、網(wǎng)站優(yōu)化、網(wǎng)絡(luò)推廣、探索永無止境。
方法一:當(dāng)前工程下的文件
fopen("demo.txt","rt");
方法二:當(dāng)前工程下的 test文件夾 中文件
fopen(".\\test\\demo.txt","rt");
方法三:絕對(duì)路徑,D盤下project文件夾中的文件
fopen("d:\\project\\demo.txt","rt");
通過windows的API,里面有兩個(gè)文件操作的,可以找到第一個(gè)文件句柄和下一個(gè)文件句柄,用這個(gè)方法就可以使用遞歸的手法來遍歷全盤,然后使用if判斷,確定的話再用得到文件絕對(duì)路徑的方法就可以了
fopen一般與buf搭配使用,通過與fgets函數(shù)配合使用,將文件中的字符串讀到buf中,這樣達(dá)到讀出文件內(nèi)容的目的代碼如下:
FILE tf=NULL;//定義一個(gè)文件指著,用于判斷fopen是否打開成功,并初始化為空;
char buf[1024]={0};//定義一個(gè)長(zhǎng)度為1024的數(shù)組,用于存放文件的內(nèi)容;
tf=fopen("c:\example.txt","r");//打開c盤指定文件,并以只讀的形式打開,避免破壞原文件,將fopen的返回值放在指針tf中,若打開成功,則返回成功的指針,打開不成功則返回空;
if(tf != NULL)//判斷是否成功,不等于NULL則表示成功;
{
if(fgets(buf,1024,tf) != NULL)//將指向c盤文件的指針的內(nèi)容賦給buf,長(zhǎng)度為1024,并判斷是否獲取成功;
{
printf("buf=%s\n",buf);//將成功獲取的字符串顯示在屏幕上;
}
}
fclose(tf);//將已打開的文件關(guān)閉;
擴(kuò)展資料:
fopen的工作原理
FILE *fp;
fp=fopen("filename.txt","w");
首先檢測(cè)filename.txt是否存在,如果不存在則在磁盤 創(chuàng)建該文件,然后在內(nèi)存開辟區(qū)域(應(yīng)該是緩沖區(qū))準(zhǔn)備寫該文件
調(diào)用fclose時(shí),將內(nèi)存中的內(nèi)容寫入到磁盤中去
測(cè)試(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!
說明文件操作不是互斥的,而且以寫方式打開文件,如果文件不存在,先在磁盤創(chuàng)建該文件
加入寫入語句:
#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
說明后關(guān)閉的,刷新了磁盤數(shù)據(jù)
參考資料來源:fopen-百度百科
#include stdio.h
main()
{
char str[80]="d:\\files\\dataFiles\\data\\avatar.bmp"; // 單斜杠處填雙斜杠
int L,i;
L = strlen(str);
for (i=L-1;i=0;i--) if (str[i] == '\\') { str[i] ='\0'; break;}; // 去掉文件名就是路徑
printf("Path= %s",str);
return 0;
}
-----------
寫成函數(shù)和調(diào)用:
#include stdio.h
void fun(char *str){
int L,i;
L = strlen(str);
for (i=L-1;i=0;i--) if (str[i] == '\\') { str[i] ='\0'; break;};
}
main()
{
char str[80]="d:\\files\\dataFiles\\data\\avatar.bmp";
fun(str);
printf("Path= %s",str);
return 0;
}
可以運(yùn)行后指定要打開的文件,成功運(yùn)行
如我D盤下有f1.txt,沒有f3.txt
兩次運(yùn)行結(jié)果分別是
一:
請(qǐng)輸入要打開的文件名(含路徑):
d:\f1.txt
成功打開文件d:\f1.txt!
Press any key to continue
二:
請(qǐng)輸入要打開的文件名(含路徑):
d:\f3.txt
打開文件失敗!
Press any key to continue
程序如下:
#include stdio.h
#include malloc.h
#define MAXSIZE 50
void main()
{
char* file=(char*)malloc(sizeof(char)*MAXSIZE);
printf("請(qǐng)輸入要打開的文件名(含路徑):\n");
gets(file);
FILE* fp;
if(!(fp=fopen(file,"r")))
{
puts("打開文件失敗!\n");
}
else
{
printf("成功打開文件%s!\n",file);
fclose(fp);
}
free(file);
}
文章標(biāo)題:c語言編寫文件路徑的函數(shù),c語言獲取文件路徑函數(shù)
本文URL:http://chinadenli.net/article30/dsihepo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、網(wǎng)站排名、網(wǎng)站收錄、自適應(yīng)網(wǎng)站、微信公眾號(hào)、Google
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)