fopen 输入路径?

发布网友 发布时间: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);

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com