首页 > 其他分享 >02-实际处理数据遇到的问题

02-实际处理数据遇到的问题

时间:2023-06-27 19:56:17浏览次数:36  
标签:02 遇到 处理 50 fileName char fileAddress newFileAddress newName

/*
  将某个文件夹中的全部文件, 按以下两条规定重命名. 
    一. 如果文件名中含有'_'且'_'到'.'之间只有一位数, 在这位数前面加'0'
    二. 如果文件名中不含'_'且'.'前面只有一位数, 在这位数前面加'0'

 程序目前存在无法解释的bug, 当pAddress的路径和old, 相同时文件名无法替换.
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char* pAddress = "F:\\149110\\";
char fileAddress[100];

void deleteChangeLine(char arr[100]);
void chackFileName(char fileName[50]);
void renameFunc1(char fileName[50]);
void renameFunc2(char fileName[50]);

int main()
{

    char* mAddress = "G:\\dir.txt";

    FILE* mFile = fopen(mAddress, "r");
    char fileName[50];

    system("dir F:\\149110\\ /b > G:\\dir.txt");

    //使用文本中的名字找到对应的文件
    while (fgets(fileName, 50, mFile) != NULL)
    {
        strcpy(fileAddress, pAddress);
        strcat(fileAddress, fileName);
        deleteChangeLine(fileAddress);
        //printf("%s", fileAddress); //文件完整路径
        FILE* findFile = fopen(fileAddress, "r");
        if (findFile == NULL) {
            printf("find file fail!");
        }
        //printf("secceseful find file!");  //成功找到文件
        //检测文件名是否合法, 如果不合法就修改.
        chackFileName(fileName);

    }

    return 0;
}

void deleteChangeLine(char fileAddress[100])
{
    for (int i = 0; i < 100; i++)
    {
        if (fileAddress[i] == '\n')
        {
            fileAddress[i] = '\0';
        }
    }
}

void chackFileName(char fileName[50])
{
    char fileNameCopy[50] = { 0 };
    strcpy(fileNameCopy, fileName);

    for (int i = 0; i < 50; i++)
    {
        if (fileNameCopy[i] == '_')
        {
            renameFunc2(fileName);
        }
        if (i == 49)
        {
            renameFunc2(fileName);
        }
    }
}

void renameFunc1(char fileName[50])
{
    char newName[50] = { 0 };
    char newFileAddress[100] = { 0 };
    char old[40] = "D:\\13770\\137_1.bmp";
    char new[40] = "D:\\13770\\137_01.bmp";


    int j = 0;

    for (int i = 0; i < 50; i++)
    {

        if (fileName[i] == '_')
        {
            newName[j] = fileName[i];

            if (fileName[i + 2] == '.')
            {
                j++;
                newName[j] = '0';
            }

        }
        else
        {
            newName[j] = fileName[i];
        }
        j++;
    }

    strcpy(newFileAddress, pAddress);
    strcat(newFileAddress, newName);
    deleteChangeLine(newFileAddress);

    //printf("%s  ---  %s \n", fileAddress, newFileAddress);

    int result = rename(old, new);
    printf("%d", result);
}

void renameFunc2(char fileName[50])
{
    char old[40] = "F:\\149110\\01.bmp";
    char new[40] = "F:\\149110\\1.bmp";
    char newName[50] = { 0 };
    char newFileAddress[100] = { 0 };
    int j = 0;

    for (int i = 0; i < 50; i++)
    {
        if (i == 0)
        {
            if (fileName[i + 2] == '.') {
                newName[j] = '0';
            }

            j++;
        }

        newName[j] = fileName[i];
        j++;
    }

    strcpy(newFileAddress, pAddress);
    strcat(newFileAddress, newName);
    deleteChangeLine(newFileAddress);

    rename(old, new);
}


标签:02,遇到,处理,50,fileName,char,fileAddress,newFileAddress,newName
From: https://www.cnblogs.com/Deng-S/p/17509783.html

相关文章

  • C/C++烧烤节管理系统[2023-06-27]
    C/C++烧烤节管理系统[2023-06-27]烧烤节管理系统1、问题描述淄博烧烤今年大火,“进淄赶烤”是大家最想干的事情,淄博烧烤大火特火的原因,火的不是烧烤,火的是人间烟火,火的是政通人和,火的是好客山东!火热的烧烤带动了淄博的旅游和经济,使一个三四线城市火出了圈,全部各地的城市都争相......
  • C/C++全国交通咨询模拟系统[2023-06-27]
    C/C++全国交通咨询模拟系统[2023-06-27](1)提供对城市信息进行编辑(如:添加或删除)的功能。(2)城市之间有三种交通工具:汽车、火车或飞机,提供对全国城市交通图和汽车时刻表、列车时刻表及飞机航班表进行编辑的功能。(信息的输入方式可以是文件输入和键盘输入两种方式)。(3)提供两种最优决策......
  • Windows系统中的组策略、计算机配置、管理模板、系统凭据分配、加密数据库修正、易受
    介绍与Windows系统中的组策略、计算机配置、管理模板、系统凭据分配、加密数据库修正、易受攻击和批处理相关的信息:Windows组策略(WindowsGroupPolicy):Windows组策略是用于管理Windows操作系统中用户和计算机配置的一种功能。它允许系统管理员通过集中的方式对多台计算机应用相......
  • 2023-06-27《计算方法》- 陈丽娟 - 线性方程组的直接解法.md
    2023-06-27《计算方法》-陈丽娟-线性方程组的直接解法Matlab计算方法高斯消元法矩阵分解线性方程组的解法这一课题我们在高等代数中已经了解过,对于一个非奇异方阵,通过求解或者克莱姆法则均可以直接得到方程的精确解,但是上述方法计算量很大,难以在实际中应用,因此引出了本章的内......
  • 精彩纷呈!LLUG 2023 北京场活动回顾来啦 | 视频回放已上线
    导读:在6月11日、6月12日,由龙蜥社区联合Linux中国主办,人民邮电出版社支持的LLUG2023第一场活动在北京市北人亦创国际会展中心成功举办。本文转自Linux中国,作者Bestony,以下为本次LLUG活动回顾全文:本次活动分为三个不同的部分:Linux中国社区技术实践、龙蜥社区发展经......
  • 2023-06-27 上传微信小程序报错:{"errcode":80082,"errmsg":"get plugin(id: wxxxxxxxx
    首先80082原因是你使用的一个id为wxxxxxxxxxxxxx的插件没有授权,所以就禁止你上传了,解决方案也很简单,只需在微信小程序后台==》设置==》第三方设置==》插件管理里面重新添加该插件即可。但是。如果这个id为wxxxxxxxxxxxxx的插件你搜索不到,嘿嘿,那就蛋疼了。你需要在代码里找出这个i......
  • XXLjob分片策略、阻塞处理策略知识汇总
    一、路由策略-分片策略场景描述一般在集群环境下,我们job被部署了多个节点,xxl-job需要做到只要有一个节点去执行job,这时候需要依赖xxl-job的任务路由策略进行分配节点。xxl-job提供的路由策略有:第一个、最后一个、轮询、随机、一致性HASH、最不经常使用、最近最久未使用、故障转移......
  • 十八、异常处理(了解)
    十八、异常处理(了解)异常处理:Python程序运行语法出错会有异常抛出不处理异常会导致程序终止异常种类异常种类IndentationError缩进对齐代码块出现问题NameError自定义标识符找不到IndexError下标错误KeyError键名出错AssertionError断言异常Sy......
  • 嘉为蓝鲸受邀出席2023航空数字化转型专题会并发表演讲
    6月15-16日,以“体验、效率、效益”为主题的2023航空数字化转型专题会在上海中航泊悦酒店召开,作为数字研运解决方案的引领者,嘉为蓝鲸受邀参与本次峰会。本次大会邀请众多行业专家、航司机场及其产业链信息化负责人,就目前航空业数字化转型的重点难点,面对面深入沟通与交流,旨在为智慧民......
  • 第二届机电一体化与自动化国际学术会议(ICMAT2023)
    第二届机电一体化与自动化技术国际会议(ICMAT2023)将于2023年10月28日至29日在中国武汉举行,由湖北省众科地质与环境技术服务中心主办,旨在增进对机电一体化与自动化技术最新进展的认识和理解。我们诚挚地邀请技术程序委员会、主题演讲者、特邀演讲者和常规演讲者。热烈欢......