C 如果文件已存在,则将数字附加到文件名

问题描述 投票:0回答:1

我正在尝试编写一个函数,如果在创建新文件之前该文件已存在,则该函数将在文件名后附加一个数字。这是用于客户端和服务器之间的文件传输。

例如,如果客户端发送文件名“Example.txt”,但服务器已经有一个名为“Example.txt”的文件,我想将文件名更改为“Example-1.txt”,如果该文件已存在,则增加将数字添加到“Example-2.txt”并继续,直到文件名不存在。

它也应该适用于文件名是“Ex.x.x.x.x.txt”或“Ex.--1.txt”的情况,并将它们更改为“Ex.x.x.x.x-1.txt”和“Ex.--2.txt”分别。

我尝试过使用 strtok() 方法,但代码变得又长又乱。我尝试在网上搜索,但没有找到任何有关此问题的信息。当必须有更好的方法来解决这个问题时,我觉得我正在尝试重新发明轮子。

c file server client strtok
1个回答
0
投票

这是解决该问题的一种方法:

char szOutFileName[100] = "MYFILE.txt";
int tries = 0;

    /* Where FILE_EXIST(char *name) is some method that tells if a filename exists or not.
    ** (Many ways to do).*/
    while(FILE_EXIST(szOutFileName)) /* Loop breaks when we achieve a unique name...*/
        sprintf(szOutFileName, "MYFILE%d.txt", tries++); /* tweak name with increment*/
© www.soinside.com 2019 - 2024. All rights reserved.