【记录】C语言|获取其他文件的绝对路径转为相对路径的两种代码
GetModuleFileName获取当前程序的绝对路径。然后对比再strcat之类的。
只能获得同一盘符下的相对路径:
#include <string.h>
/*pa是绝对路径,relPath用于存放相对路径*/
bool AbsPath2RelPath(char* pa, char* relPath)
{
char sCurrentDir[256];
GetModuleFileName(NULL, sCurrentDir, sizeof(sCurrentDir));
char* p = strrchr(sCurrentDir, '\\');
*(p+1) = 0;
char* p = sCurrentDir;
char pat[256];
strcpy(pat, pa);//防止原路径被改变
char* path = pat;
strcpy(relPath,"");
const char token[10] = "..\\";
int count,i;
for (i=1; *path && *p && (*path == *p) && strrchr(path, '\\'); ++path, ++p)
if(*path=='\\'&&*p==*path)i=0;
if (i)
{
//查找失败
return false;
}
char* pTemp; count = 0;
while (pTemp=strrchr(p, '\\')) {
*pTemp = 0;
strcat(relPath, token);
}
strcat(relPath, path);
return true;
}
同一文件夹(简化版):
/*pa是绝对路径,relPath用于存放相对路径*/
bool AbsPath2RelPath(char* pa, char* relPath)
{
char sCurrentDir[256];
GetModuleFileName(NULL, sCurrentDir, sizeof(sCurrentDir));
char* p = strrchr(sCurrentDir, '\\');
*(p+1) = 0;
char* p = sCurrentDir;
char pat[256];
strcpy(pat, pa);//防止原路径被改变
char* path = pat;
strcpy(relPath,"");
const char token[10] = "..\\";
int count;
for (;*path && *p && (*path == *p) && strrchr(path, '\\'); ++path, ++p);
if (*p)
{
//查找失败
return false;
}
strcat(relPath, path);
return true;
}
虽然没用上。
【记录】C语言|获取其他文件的绝对路径转为相对路径的两种代码的更多相关文章
- javaweb-servlet获取给定文件在服务器上的绝对路径的方法
1.通过ServletContext获取 在tomcat5,6,7版本中我们可以通过ServletContext来获取给定文件在服务器上的绝对路径. ServletContext context = ...
- 获取.jar文件运行时所处的路径
在Windows控制台中运行.jar文件时的两种环境: (1)控制台当前所在目录是.jar文件所在的目录 (2)控制台当前所在目录不是.jar文件所在的目录 我的期望: 我希望在上述两种环境下均可以得 ...
- Nginx访问PHP文件的File not found错误处理,两种情况
这个错误很常见,原有有下面两种几种 1. php-fpm找不到SCRIPT_FILENAME里执行的php文件 2. php-fpm不能访问所执行的php,也就是权限问题 第一种情况 可以在你的loc ...
- java poi操作创建xslx或xsl文件,存本地和进行网络传输两种方式集成
package com.java.zxf.util; import java.io.IOException; import java.io.OutputStream; import java.net. ...
- 关于获取资源文件,Class.getResource和ClassLoader.getResource的区别
原文同步发表至个人博客[夜月归途] 原文链接:http://www.guitu18.com/se/java/2019-02-22/29.html 作者:夜月归途 出处:http://www.guitu ...
- Windows下获取Dump文件以及进程下各线程调用栈的方法总结(转)
1. Dump文件的用途 Dump文件, 主要用于诊断一个进程的运行状态,尤其是碰到崩溃(Crash)或者挂起(hang)不响应时,需要分析它的工作状态. 除了平时常见的attach到这个进程, 分 ...
- 【转】DLL中导出函数的两种方式(dllexport与.def文件)
DLL中导出函数的两种方式(dllexport与.def文件) DLL中导出函数的声明有两种方式: 一种方式是:在函数声明中加上__declspec(dllexport):另外一种方式是:采用模块定义 ...
- 计算机二级-C语言-程序设计题-190111记录-两种指针赋值的不同,普通输入输出函数和文件输入输出函数的使用
//程序设计题:函数fun的功能是:将两位数的正整数a,b合并形成一个整数放在c中.合并的方式是:将a数的十位和个位数依次放在c数的个位和百位上,b数的十位和个位数依次放在c数的十位和千位上.例如:当 ...
- C语言复制文件的两种简单的方法【从根本解决问题】
网上的方法大致有这样几种: 1.使用操作系统提供的复制文件的API 2.使用C语言本身提供的复制文件的函数 3.直接读写文件,从文件角度来操作,从而直接将一个文件复制 这里我们使用的就是这第三种. 复 ...
- 脚本工具(获取某个文件夹下的所有图片属性批量生成css样式)
问题描述: 由于有一次工作原因,就是将某个文件夹下的所有图片,通过CSS描述他们的属性,用的时候就可以直接引用.但是我觉得那个文件夹下的图片太多,而且CSS文件的格式又有一定的规律,所有想通过脚本来生 ...
随机推荐
- C#反射机制学习
参考原文链接:https://blog.csdn.net/xiaouncle/java/article/details/52983924 反射是.NET中的重要机制,通过反射可以得到*.exe或*.d ...
- ABB喷涂机器人维护保养
正确规范的ABB喷涂机器人保养能够最大限度保证机器人正常运行, 保证经济效率并提高产量.因此,预防性喷涂机器人保养是一项不可或缺的工作. ABB喷涂机器人正常运行每3年或10000小时后,则需要做一次 ...
- 【COM3D2Mod 制作教程(8)】实战!制作衣服部分(下)
[COM3D2Mod 制作教程(8)]实战!制作衣服部分(下) 制作袜子 Mod 体会了裙子 Mod 的制作流程,不知道你有没有被麻烦的权重和形态键搞崩溃过,现在做袜子难道还得在来一遍?而且裆下的权重 ...
- UE蓝图:准心锁定敌人实现,通过UI锁定敌人
UI控件蓝图 1.让UI动起来 (1) 创建事件AimMoveEvent,接受参数Dir,即UI的移动方向 (2) *5是控制ui的移动速度(阅者可自行调整,建议提升为参数),CorssHairP ...
- TDH - 如何显示Guardian Client角色
注意:本博客适用TDH版本4.3.x 默认该页面的 Guardian Client 是隐藏的,如果需要对 Guardian Client角色进行什么操作的话,需要先将 Guardian Client角 ...
- 关于Processing开发应用及发布分享的一些经验分享
从2015年10月份开始接触Processing,到现在的2021年9月底,足足有6年了!笔者会竭尽全力把所有学到的知识.经验分享出来.这篇是关于Processing开发应用及发布分享的一些内容,可能 ...
- 大数据之路Week10_day05 (Redis总结I)
正文 1.为什么使用redis 分析:博主觉得在项目中使用redis,主要是从两个角度去考虑:性能和并发.当然,redis还具备可以做分布式锁等其他功能,但是如果只是为了分布式锁这些其他功能,完全还有 ...
- 机器学习 | 强化学习(8) | 探索与开发(Exploration and Exploitation)
8-探索与开发(Exploration and Exploitation) 1.导论 探索与开发二难问题 基于决策的决策过程存在以下两种选择 开发:基于目前的学习做最优的决策 探索:获取更多的学习 最 ...
- go map fatal error: concurrent map iteration and map write 读写锁与深度拷贝的坑
起因 从币安实时拉取交易对的数据,这里使用了 map,用于存放每个交易对的最新价格,由于 map 并不是并发安全的所以加了读写锁. 但系统有时候还是会发生 fatal error: concurren ...
- vue 判断某个时间小于当前时间
如下 new Date().getTime() 获取当前时间(毫秒) 我需要对比的时间为秒,所以需要除于1000 <div v-if="scope.row.created_at < ...