发布网友 发布时间:2022-04-25 06:07
共4个回答
热心网友 时间:2023-11-01 19:35
首先你没有说清楚路径是指目录名还是文件名,还有路径是绝对路径还是相对路径,那么我只能用比较通用的方式了
假设你的程序是 myprogram.exe <路径名>
首先根据路径名是不是用“.”或者".."开始的,如果是,那么就是相对路径,首先要获得当前工作目录(windows下用GetCurrentDirectory,unix或者linux下用getcwd),然后将当前工作目录和相对路径名组合成绝对路径。
如果路径名是文件名,在windows下需要查找‘\’字符,替换成"\\",然后才能用fopen打开,如果是unix、linux之类的,可以直接用argv[1]
如果路径名是目录名,那么有两种方式,一种是进strcat将目录名加分隔符(linu下是/,windows下是\\)加文件名,形成文件的绝对路径,然后用fopen(文件据对路径,打开方式)打开;另外一种是切换当前工作目录(windows下用SetCurrentDirectory函数,linux、unix下用chdir),然后fopen(文件名,打开方式)打开
热心网友 时间:2023-11-01 19:35
最简单的,以void main(int argc, char **argv)为例,假设程序执行方式是:
program.exe file。则在命令行中输入:program.exe d:\123.bmp. 如果路径中有空格,需要用引号将此参数包括起来。
则在main函数中,就可以使用argv[1]作为fopen的文件参数了。比如:
void main(int argc, char**argv)
{
FILE *fp;
if ( argc >= 2 )
{
fp = fopen(argv[1], "w+");
/*........*/
fclose(fp);
}
}
编译生成可执行程序后,就可以program.exe d:\123.bmp了。
热心网友 时间:2023-11-01 19:36
我觉得应该是两个斜杠,d:\\123.bmp
热心网友 时间:2023-11-01 19:36
FILE *a;
char buf[100]="a.txt";
char *pc;
pc=buf;
a=fopen(buf,"r");
fclose(a);
a=fopen(pc,"r");
fclose(a);