在c语言中,怎样去掉文件后缀名?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在c语言中,怎样去掉文件后缀名?相关的知识,希望对你有一定的参考价值。

在c语言中,怎样去掉文件后缀名?

1、去掉文件后缀名可以通过修改文件名的方式实现。要调用操作系统提供的API函数,比如Windows上的MoveFile(),也可以直接调用cmd中已提供的重命名命令——rename。下面的示例代码,调用rename命令来重名命文件名。
2、例程:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int ac, char *pav[])

if (ac!=3) 
printf("程序名 要重命名的文件路径 新的文件名\\n");
printf("示例:test.exe 1.txt 2.txt\\n");
return 0;

if (access(pav[1], 0) !=0) 
printf("不存在该文件\\n");
return 0;

char szcmd[256] = "cmd /c rename ";
strcat(szcmd, pav[1] );
strcat(szcmd, " ");
strcat(szcmd, pav[2]);
system(szcmd);
return 0;

参考技术A #include <string.h>
char *remove_suffix(char *file) 
    char *last_dot = strrchr(file, '.');
    if (last_dot != NULL && strrchr(file, '\\\\') < last_dot)
        *last_dot = '\\0';
    return file;

用shell命令怎样批量删除文件的后缀名

有个前提是需要处理的文件不在同一个文件夹,在各个子文件夹中
find . -name "*.txt" -exec mv .bak \;
这样可以给所有txt文件后面添加后缀,把*.txt变成*.txt.bak,怎样才能去掉后缀,把*.txt直接变成*呢

1)要代码简洁、写成一行的话,可以考虑这样:

find . -name "*.txt" | awk 'new=gensub(".txt","",1);system("mv "$0" "new)'


用awk处理,gensub函数将.txt后缀替换为空并返回替换后的字串赋值给变量new,最后借用system调用执行mv命令更名文件。

 

2)要思路简单易于理解的话,可以这样:

for file in `find . -name "*.txt"`
do
    mv $file $file%.*
done

$file%.* 是bash中字符串处理“掐头去尾法”中的去尾法。

参考技术A

用basename命令

for i in `find . -name "*.txt"`
do
    mv $i `basename $i txt`bak
done

参考技术B

假设你要去掉的是 .txt 后缀 

rename ".txt" "" *

这个是把当前目录下所有文件名中含.txt的,将第一个遇见的.txt去掉。

妥善实验后使用。因为此命令会直接对你文件名进行操作。

以上是关于在c语言中,怎样去掉文件后缀名?的主要内容,如果未能解决你的问题,请参考以下文章

怎样才能把文件的后缀名隐藏?

怎么隐藏文件后缀名?

用shell命令怎样批量删除文件的后缀名

Linux中链接库去掉后缀名,gcc如何区分链接的是动态库还是静态库?

用c语言根据文件后缀名判断文件类型

java如何去掉后缀名