C语言的运行问题(总说文件不存在)

C语言的运行问题(总说文件不存在),第1张

1、如果是c语言生成的可执行程序,提示找不到文件,一般是因为没有指明程序的目录,特别是在Linux平台上,以test.c为例:

gcc -o test test.c 

./test

其中,“.“是指的当前目录,./test就是执行当前目录下的test程序。在windows平台上生成控制台程序时,需要使用cd命令进入debug或者relase目录,比如

cd test/debug

2、如果是C语言源代码中使用fopen等系列的文件 *** 作函数对文件进行打开、读写等 *** 作,提示打不开文件,一般是C源代码中的FILE指针返回了NULL,调用相应的函数时,需要指明要 *** 作文件的具体路径 。

C语言中用OPEN函数就可以判断出指定目录下的文件是否存在。

比如:

#include<stdio.h>

main()

{

FILE *fp

if((fp=fopen("c:\\filechk.txt","r"))==NULL)printf("this file is not exist"//文件不存在

else

printf("Open sucess")

close(fp)

}

你贴的这个函数PathFileExists并不是C语言提供的库函数,而是windows系统提供的系统调用,如果你是初学者,尽量用C语言提供的库函数来实现功能,你可以这样:

int exist(char *file)//传入想要判断的路径字符串指针

{

FILE *fp

fp=fopen(file,"r") //fopen是一个C库函数,用于打开文件,"r"是只读模式,在这种模式下,如果文件存在,则能成功以只读模式打开,fopen返回一个非0的文件描述符,如果文件不存在,则fopen返回NULL(NULL意思是空)。正好可以利用这一点来判断文件是否存在

if(fp=NULL)

return 0 //不存在返回0

else

{

fclose(fp) //存在的话,要先把之前打开的文件关掉

return 1 //然后返回1

}

}

这样,你就可用这里定义的exist函数判断文件是否存在了。比如

if(exist("a.txt")==0)printf("不存在!")

else printf("存在!")

如果你真想用PathFileExists这个函数,那么也很简单,LPCTSTR你可以简单理解为就相当于char*,这是windows封装的一个数据类型。_in是一个修饰符,表示参数是传入给PathFileExists用的而不是由PathFileExists传出来的。这个函数可以这样用:

if(PathFileExists("a.txt")==FALSE)printf("不存在!")

else printf("存在!")

用这个函数时注意加头文件<windows.h>

有问题请继续追问啊


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/8043559.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-12
下一篇 2023-04-12

发表评论

登录后才能评论

评论列表(0条)

保存