扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
C语言中指定文件路径的三种方法:
“只有客户发展了,才有我们的生存与发展!”这是创新互联公司的服务宗旨!把网站当作互联网产品,产品思维更注重全局思维、需求分析和迭代思维,在网站建设中就是为了建设一个不仅审美在线,而且实用性极高的网站。创新互联对成都做网站、网站建设、网站制作、网站开发、网页设计、网站优化、网络推广、探索永无止境。
方法一:当前工程下的文件
fopen("demo.txt","rt");
方法二:当前工程下的 test文件夹 中文件
fopen(".\\test\\demo.txt","rt");
方法三:绝对路径,D盘下project文件夹中的文件
fopen("d:\\project\\demo.txt","rt");
通过windows的API,里面有两个文件操作的,可以找到第一个文件句柄和下一个文件句柄,用这个方法就可以使用递归的手法来遍历全盘,然后使用if判断,确定的话再用得到文件绝对路径的方法就可以了
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\n",buf);//将成功获取的字符串显示在屏幕上;
}
}
fclose(tf);//将已打开的文件关闭;
扩展资料:
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-百度百科
#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;
}
-----------
写成函数和调用:
#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;
}
可以运行后指定要打开的文件,成功运行
如我D盘下有f1.txt,没有f3.txt
两次运行结果分别是
一:
请输入要打开的文件名(含路径):
d:\f1.txt
成功打开文件d:\f1.txt!
Press any key to continue
二:
请输入要打开的文件名(含路径):
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("请输入要打开的文件名(含路径):\n");
gets(file);
FILE* fp;
if(!(fp=fopen(file,"r")))
{
puts("打开文件失败!\n");
}
else
{
printf("成功打开文件%s!\n",file);
fclose(fp);
}
free(file);
}
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流