扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
其实在ANSI C之前C语言是不需要声明函数就能调用的。在编译阶段,调用没有声明的函数会把这个问题拖延到念汪链接阶段,在链接阶段找不到符号才由链接器报错。那么没有声明的情况下怎么知道这个函数到底是怎样的原型呢……他们把这叫做autoprototype,根据调用时传入的形参的类型猜测函数的原型。实际上在ANSI C中你还是不需租郑要完整的声明原型,可以在声明的时候把参数列表忽略掉,让编译器去根据调用处猜测函数的原型。不仔型仔过这样写出来之后根据不同的调用约定有时候会由于编写者的错误而意外的破坏栈帧。这样对许多人来说还是留下一个问题:古老的Turbo C并不遵循ANSI C的建议,它怎么需要提前声明函数?老实说Turbo C是一个特例。我相信贝尔实验室那帮发明了C和UNIX的人都会认为Turbo C的这个设计很无聊,不符合使用的习惯以及实际的需要。
创新互联建站-专业网站定制、快速模板网站建设、高性价比海安网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式海安网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖海安地区。费用合理售后完善,十年实体公司更值得信赖。
头文件:io.h
功 能: 确定文件或文件夹的访问权限。即,检查某个文件的存取方式,比如说是只读方式、只写方式谨悔则等。如果指定的存取方式有效,则函数返回0,否则函数返回-1。
用 法: int access(const char *filenpath, int mode); 或者int _access( const char *path, int mode );
参数说明:
filenpath
文件或文件夹的路径,当前目录直接使用文件或文件夹名
备注:当该参数为文件的时候,access函数能使用mode参数所有的值,当该参数为文件夹的时候,access函数值能判断文件夹是否存在。在WIN NT 中,所有的文件夹都有读和写权限
mode
要判断的模式
在头文件unistd.h中的预定义如下:
#define R_OK 4 /* Test for read permission. */
#define W_OK 2 /* Test for write permission. */
#define X_OK 1 /* Test for execute permission. */
#define F_OK 0 /* Test for existence. */
具体含义如下:
00 只判断是否存在
02 只判断是否有写权限
04 只判断是否有读权限祥棚
06 判断是否有读并且有写权限
程序例
#includestdio.h
#includeio.h
int file_exists(char *filename);
int main(void)
{
printf("Does NOTEXIST.FIL exist: %s\n",
file_exists("NOTEXISTS.FIL") ?"YES":"NO");
return 0;
}
int file_exists(char *filename)
{
return (access(filename, 0) == 0);
}
头文件:io.h
功 能: 确定前链文件或文件夹的访问权限。即,检查某个文件的存取方式,比如说是只读方式、只写方式等。如果指定的存取方式有效,则函数返回0,否则函数返回-1。
用 法: int access(const char *filenpath, int mode); 或者int _access( const char *path, int mode );
参数说明:
filenpath
文件或文件夹的路径,当前目录直接使用文件或文件夹名
备注:当该参数为文件的时候,access函数能使用mode参数所有的值,当该参数为文件夹的时候,access函数值能判断文件夹是否存在。在WIN NT 中,所有的文件夹都有读和写权限
mode
要判断的模式
在头文件unistd.h中的预定义如下:
#define R_OK 4 /* Test for read permission. */
#define W_OK 2 /* Test for write permission. */
#define X_OK 1 /* Test for execute permission. */
#define F_OK 0 /* Test for existence. */
具体含义如下:
00 只判断是否存在
02 只判断是否有写权限
04 只判断是否有读权限
06 判断是否有读并且有写权限
程序例
#includestdio.h
#includeio.h
int file_exists(char *filename);
int main(void)
{
printf("Does NOTEXIST.FIL exist: %s\n",
file_exists("NOTEXISTS.FIL") ?"YES":"NO");
return 0;
}
int file_exists(char *filename)
{
return (access(filename, 0) == 0);
}
你贴的这个函数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
有问题请继续追问啊
你说的应该是exit()函数吧,这个函数的详细资料如下:
函数名: exit()
所在头文腔瞎锋件:stdlib.h(如果是”VC6.0“的话头文件为:windows.h)
功 能: 关闭所有文件,终止正在执行的进程。
exit(1)表示异常退出.这个1是返回给操作系统的。
exit(x)(x不为0)都表示异常退出
exit(0)表示正常退出
exit()的参数会被传递给一些操作系统,包括UNIX,Linux,和MS DOS,以神游供其他程序使用伍晌。
stdlib.h: void exit(int status);
参 数 : status //程序退出的返回值.
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流