用于实现读取某个类型的文件,如txt,然后对文件内容进行处理之后,输出到另一个文件csv

需要根据指定的输入文件绝对路径,得到修改后缀之后的文件绝对路径,用于在本地创建。

首先是获取文件绝对路径字符串中的后缀(扩展名),实现思路是,右边第一.之后的字符串就是文件扩展名。

/*pFilePath:文件的绝对路径pOutFileExt:文件的后缀名pOutFileName:不含文件后缀的文件路径return:0-执行成功, -1-执行失败
*/
int GetFileExt(char *pFilePath, char *pOutFileExt, char *pOutFileName)
{char *pDest = NULL;int iResult = 0;int iFullPathLen = 0;int iFileExtLen  = 0;char szFullPathName[500] = {0};//参数不合法if ((NULL == pFilePath) || (NULL == pOutFileExt) || (NULL == pOutFileName)){printf("file is null\n");return -1;}printf("filePath=%s\n", pFilePath);//文件路径去掉\0后存入本地数组_snprintf(szFullPathName,sizeof(szFullPathName)-1, "%s", pFilePath);//文件完整路径的长度iFullPathLen = strlen(szFullPathName);      //12//右边.的位置pDest = strrchr(szFullPathName, '.');       //p+8//没有找到.if (NULL == pDest){return -1;}//后缀的起始下标p+iResultiResult = pDest - szFullPathName + 1;       //p+8-p+1=9//后缀长度iFileExtLen = iFullPathLen - iResult;       //12-9=3,if (iFileExtLen > 0){memcpy(pOutFileExt, szFullPathName+iResult, iFileExtLen);memcpy(pOutFileName, szFullPathName, iFullPathLen-iFileExtLen-1);}else{*pOutFileName = 0;*pOutFileExt = 0;}return 0;
}

然后是在不含文件后缀的文件路径字符串后面,拼接指定的后缀字符串。


/*pFilePath: 输入文件的绝对路径,含文件扩展名pOutFilePath: 修改扩展名后的文件的绝对路径pOutExt: 输出文件的扩展名,如"csv"example:*/
int ModifyFileExt(char *pFilePath, char *pOutFilePath, const char *pOutExt)
{char szOutFileName[100] = {0};char szFileExt[100] = {0};char szOutFilePath[200] = {0};//参数不合法if(NULL == pFilePath || NULL == pOutFilePath || NULL == pOutExt)return;//解析失败if(-1 == GetFileExt(pFilePath, szFileExt, szOutFileName))return -1;//    printf("path:[%s], ext:[%s], name:[%s]\n", pFilePath, szFileExt, szOutFileName);snprintf(szOutFilePath, sizeof(szOutFileName), "%s.%s", szOutFileName, pOutExt);memcpy(pOutFilePath, szOutFilePath, strlen(szOutFilePath));return 0;
}

实际调用:

#include "stdio.h"
#include "stdlib.h"
#include "string.h"int ModifyFileExt(char *pFilePath, char *pOutFilePath, const char *pOutExt);
int GetFileExt(char *pFilePath, char *pOutFileExt, char *pOutFileName);int main(void)
{char szFilePathOut[500] = {0};const char szFilePathIn[] = "D:/abc.txt";int ret = 0;ret = ModifyFileExt(szFilePathIn, szFilePathOut, "csv");if(ret != -1)printf("file in:[%s], file out:[%s]\n", szFilePathIn, szFilePathOut);else printf("filepath is null\n");return 0;
}

输出结果:

$ ./a.exe
filePath=D:/abc.txt
file in:[D:/abc.txt], file out:[D:/abc.csv]

C语言实现获取文件后缀、修改后缀相关推荐

  1. Qt总结之一:遍历文件夹和文件目录,并过滤和获取文件信息、后缀名、前缀名(一)

    一.采用递归和QDir实现文件夹下所有文件遍历的方法 #include <QDir> bool FindFile(const QString & path) {QDir dir(p ...

  2. 【QT】遍历文件夹和文件目录,并过滤和获取文件信息、后缀名、前缀名

    [QT]遍历文件夹和文件目录,并过滤和获取文件信息.后缀名.前缀名 前言: 需要在特定目录或磁盘下查找特定文件 一.筛选目录 (一)单一目录下遍历,筛选特定文件 QDir dir("./Sa ...

  3. Python 获取文件或者文件夹的修改日期 获取文件的修改时间、访问时间、创建时间、大小占用

    Windows.Linux # -*- coding: UTF8 -*- import os import timedef TimeStampToTime(timestamp):timeStruct ...

  4. 获取文件最后修改时间的VC代码

    作者:朱金灿 来源:http://blog.csdn.net/clever101 很多时候我们需要知道系统是什么时候编译生成的.我想到的一个直接的思路的是获取exe文件的最后修改时间.下面的一段代码可 ...

  5. 服务器内文件如何修改后缀名,修改服务器配置 让asp.net文件后缀名随心所欲

    asp或php的方法对.net就不行了,同样的办法,修改应用程序映射后,仍然没有得到预期的结果,文件什么内容,返回的就是什么内容,而不是当作asp.net程序来处理了 有的网站出于各种各样的原因,在I ...

  6. Qt总结之二:遍历文件夹和文件目录,并过滤和获取文件信息、后缀名、前缀名(二)

    前言 需要在特定目录或磁盘下查找特定文件 一.筛选目录 (一)单一目录下遍历,筛选特定文件 QDir dir("./SaveFiles"); QFileInfoList list ...

  7. Qt总结之三:磁盘文件操作、遍历文件夹和文件目录,并过滤和获取文件信息、后缀名、前缀名(三)

    前言 本节内容主要包括磁盘容量检测.磁盘内指定或特定文件的操作 话不多说,先上效果图 共分为两个部分,第一部分是检测磁盘容量,第二部分是筛选磁盘内指定文件(test.txt)或特定文件(.txt / ...

  8. excel 修改设置(将excel修改后缀名,解压缩方式)

    1 新建一个excel文件 2 修改后缀名为.zip格式 3解压缩出文件夹 4 文件结构如下,可以进行修改,给excel添加一些功能键可结合VBA添加事件. 5修改完成后,全选文件,进行压缩.注:不要 ...

  9. python_获取文件及文件夹大小修改时间

    获取文件大小 关键函数是 os.path.getsize(file) 获取文件夹大小 没有直接的函数,但是可以通过遍历文件夹,将每个文件的大小叠加 关键函数 for root, dirs, files ...

最新文章

  1. 在MySQL中保存Java对象_java对象储存到数据库
  2. 专栏订阅须知《必读》
  3. 怎样正确查看Linux的内存占用情况
  4. JDBC粗略学习( 阿巴阿巴阿巴阿巴)
  5. idea swagger生成接口文档_Spring Boot(九)Swagger2自动生成接口文档和Mock模拟数据...
  6. 安卓系统的文件管理神器Solid Explorer(v2.2)
  7. 【NeurIPS 2019】最大熵的蒙特卡洛规划算法
  8. Python入门经典题斐波那契数列
  9. “完数”(C代码+流程图)
  10. (丝滑版)Python使用Opencv画一个哆啦A梦(动态),并制作成可执行文件.exe
  11. GAMES101-现代计算机图形学入门-闫令琪——Lecture 18 Advanced Topics in Rendering
  12. Zabbix 分布式监控
  13. 【Linux】Linux运维命令汇总单词表
  14. 回顾敏捷实践踩过的坑:如果重新做,我会这样做(一)
  15. NEU 1690 (最短路+LCA)
  16. 【空格】前后是非多,它能导致大故障,请看
  17. 利用pandas实现json文件转化成csv文件
  18. 怎么翻译截图里面的文字?快来看看截图翻译怎么弄
  19. C#基础 string Split 用字符分割字符串,删除空白项
  20. linux之等待队列

热门文章

  1. MacOS-Homebrew
  2. Merriam-Webster‘s Vocabular Builder ( PAC )
  3. oracle故障一例,Oracle 10g异机恢复后EM无法启动故障处理一例
  4. 23个 Web 开发中的侧边栏菜单练习实例
  5. HttpClient javax.net.ssl.SSLPeerUnverifiedException: Certificate doesn't match 错误解决办法
  6. Ubuntu 16.04.4 配置 Nvidia显卡驱动 + CUDA 9.0 + cuDNN v7.0.5 + OpenCV 3.2.0
  7. 圆的css样式,圆形进度条css3样式
  8. 808《数据结构》参考答案
  9. 中职 网络搭建与应用 DCN无线常用配置
  10. python列表查找值_查找列表中某个值的位置(python)