c语言程序如何设置默认路径

c语言程序如何设置默认路径,第1张

可以为main函数增加两个参数

int

main(int

argc,char*

argv[])

{

return

0

}

argc

是命令行参数的个数,argv是一个字符串数组,代表以空格分隔的命令行参数,其中

argv[0]

程序自身的路径(包括文件名)。

也可以使用API函数

GetModuleFileName

,用法如下,需要包含头文件

windows.h

tchar.h

TCHAR

szFile[MAX_PATH]

=

{0}

DWORD

dwLen

//返回路径长度

dwLen

=

GetModuleFileName(NULL,szFile,MAX_PATH)

此时,szFile

中保存了程序本身的路径,可以将最后的扩展名改为

txt

即可得到一个与程序同路径同名的文本文件名,将数据写入其中即可。

代码如下:

szFile[dwLen

-3]

=

0

_tcscat(szFile,_T("txt"))

此时,szFile

就是一个文件文件路径了,可以直接用。

我想,你所说的默认路径,可以先把一个路径(想要的默认路径)保存到一个字符数组中,输入文件名后,用

strcat

函数把文件名连接到默认路径的后面就可以了。

如果要改变路径,就用

strcpy

直接把新的路径复制到字符数组中。

要用 c++ 程序:

#include <windows.h>

#include <string>

#include <iostream>

using namespace std

string ExePath() {

char buffer[MAX_PATH]

GetModuleFileName( NULL, buffer, MAX_PATH )

string::size_type pos = string( buffer ).find_last_of( "\\/" )

return string( buffer ).substr( 0, pos)

}

int main() {

cout <<"my directory is " <<ExePath() <<"\n"

}

=====

c 程序,也许可以通过char *argv[] 寻找,

int main(int argc, char *argv[]){。。。。}

argv[0] 含程序名,可以尝试 用 system() 调 DOS 命令查找:

#include<stdio.h>

int main(int argc, char *argv[])

{

FILE *fp

char s[80]

sprintf(s,"DIR %s.c >a.log",argv[0])

system(s) // 执行后,屏幕输出 存入 a.log 文本文件

fp =fopen("a.log","r") // 打开文件

// 这里 一行一行地读文件,找到 关键词 Directory of , 例如:

// Directory of D:\ZZ\C\example

// D:\ZZ\C\example 就是当前路径

return 0

}

文件路径分为绝对路径和相对路径。

绝对路径:是从盘符开始的路径,形如

D:\Project\Data\input.txt

相对路径:是从当前路径开始的路径,假如当前路径为D:\Project

要描述上述路径,只需输入

Data\input.txt

实际上,严格的相对路径写法应为

.\Data\input.txt

其中,.表示当前路径,在通常情况下可以省略,只有在特殊的情况下不能省略。

与.类似..为父目录,也即上一层目录。

另外,还有一种不包含盘符的特殊绝对路径,形如

\windows\system32\cmd.exe

无论当前路径是什么,会自动地从当前盘的根目录开始查找指定的程序。


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

原文地址: http://outofmemory.cn/yw/10957655.html

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

发表评论

登录后才能评论

评论列表(0条)

保存