fopen 输入路径?

C语言菜鸟,求教各位高手~我想用fopen函数来打开某个任意文件夹下的图片,比如,我要打开D盘的123.bmp文件,但是路径是在程序执行的时候输入的,请问怎么做?... C语言菜鸟,
求教各位高手~
我想用fopen函数来打开某个任意文件夹下的图片,比如,我要打开D盘的123.bmp文件,但是路径是在程序执行的时候输入的,请问怎么做?
展开
 我来答
cycloneii
推荐于2017-11-23 · 超过14用户采纳过TA的回答
知道答主
回答量:46
采纳率:0%
帮助的人:40.8万
展开全部
首先你没有说清楚路径是指目录名还是文件名,还有路径是绝对路径还是相对路径,那么我只能用比较通用的方式了
假设你的程序是 myprogram.exe <路径名>
首先根据路径名是不是用“.”或者".."开始的,如果是,那么就是相对路径,首先要获得当前工作目录(windows下用GetCurrentDirectory,unix或者linux下用getcwd),然后将当前工作目录和相对路径名组合成绝对路径。

如果路径名是文件名,在windows下需要查找‘\’字符,替换成"\\",然后才能用fopen打开,如果是unix、linux之类的,可以直接用argv[1]
如果路径名是目录名,那么有两种方式,一种是进strcat将目录名加分隔符(linu下是/,windows下是\\)加文件名,形成文件的绝对路径,然后用fopen(文件据对路径,打开方式)打开;另外一种是切换当前工作目录(windows下用SetCurrentDirectory函数,linux、unix下用chdir),然后fopen(文件名,打开方式)打开
wdz609
2010-08-18 · TA获得超过128个赞
知道小有建树答主
回答量:120
采纳率:0%
帮助的人:142万
展开全部
最简单的,以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了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
angeljinjin216
2010-08-18 · TA获得超过196个赞
知道小有建树答主
回答量:252
采纳率:100%
帮助的人:100万
展开全部
我觉得应该是两个斜杠,d:\\123.bmp
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小易半不邋遢
2010-08-18
知道答主
回答量:16
采纳率:0%
帮助的人:11.4万
展开全部
FILE *a;
char buf[100]="a.txt";
char *pc;
pc=buf;

a=fopen(buf,"r");
fclose(a);
a=fopen(pc,"r");
fclose(a);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式