| 网站首页 | 业界新闻 | 群组 | 交易 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 174 人关注过本帖
标题:b.exe调用a.exe的fopen问题
只看楼主 加入收藏
lyl930130
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:320
专家分:111
注 册:2013-5-13
结帖率:91.3%
  已结贴   问题点数:20  回复次数:4   
b.exe调用a.exe的fopen问题
a.exe:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main()
{
    FILE *fr;
    fp=fopen("a.int","rb");
    if(fp==NULL)
        printf("error fopen");
    else
        printf("success fopen");
    return 0;
}

b.exe:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>

int main()
{
    system("........\\a.exe");//a.exe的绝对路径
    return 0;
}

windows7
当a.exe和b.exe在同一个文件夹下时,  调用b.exe输出 success fopen
当a.exe和b.exe不在同一个文件夹下时,调用b.exe输出 error fopen,调试发现错误为找不到该文件

为什么都用的绝对路径,在同一个文件夹下能成功打开文件,在不同文件夹就不行。

[此贴子已经被作者于2018-8-7 10:08编辑过]

2018-08-07 10:02
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:254
帖 子:5702
专家分:32250
注 册:2011-1-18
  得分:7 
为什么都用的绝对路径
明明是fopen("a.int","rb"),哪里用绝对路径了?
fopen("a.int","rb");是打开当前路径下的a.int
当前路径你用GetCurrentDirectory输出看看

你把a.exe改为如下代码看看
程序代码:
#include <stdio.h>
#include <windows.h>

int main( void )
{
    DWORD n = GetCurrentDirectoryA( 0, NULL );
    char* p = malloc( n );
    GetCurrentDirectoryA( n, p );
    puts( p );
    free( p );
}

2018-08-07 11:13
lyl930130
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:320
专家分:111
注 册:2013-5-13
  得分:0 
回复 2楼 rjsp
a.ini和a.exe始终保持在同一个文件夹的,主要是a.exe和b.exe在同一个文件夹下可以打开a.ini,如果把b.exe放在其他路径就提示找不到a.ini

试了版主说的方法,在a中增加输出当前路径的函数。
a在a目录,b在b目录,b调用a,输出的是b的路径不是a的路径。



[此贴子已经被作者于2018-8-9 11:42编辑过]

6 天前 10:58
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:254
帖 子:5702
专家分:32250
注 册:2011-1-18
  得分:0 
我不是已经告诉你了嘛,fopen("a.int","rb")是打开当前路径下的a.int
当前路径 当前路径 当前路径 当前路径 当前路径 当前路径 ……
不是
a.exe 所在路径,不是 a.exe 所在路径,不是 a.exe 所在路径,……
与a.ini和a.exe是不是在同一个文件夹下有个关系

当前路径 是什么,你执行程序之前是没法确定的,你程序执行过程中是随时可能变化的。
6 天前 11:07
花脸
Rank: 6Rank: 6
等 级:侠之大者
威 望:1
帖 子:652
专家分:460
注 册:2017-1-4
  得分:7 
fp=fopen("a.int","rb");
打开的是与代码所在的相同文件夹下的a.int文件,与a.exe文件的位置无关。

绝对路径就是你的主页上的文件或目录在硬盘上真正的路径。
假如你的a.int放在D盘usr文件夹里,
绝对路径:D:\usr\a.int
改为:    fp=fopen("D:\usr\a.int","rb");
6 天前 14:24







关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.034218 second(s), 8 queries.
Copyright©2004-2018, BCCN.NET, All Rights Reserved