我正在尝试编写一个函数,如果在创建新文件之前该文件已存在,则该函数将在文件名后附加一个数字。这是用于客户端和服务器之间的文件传输。
例如,如果客户端发送文件名“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() 方法,但代码变得又长又乱。我尝试在网上搜索,但没有找到任何有关此问题的信息。当必须有更好的方法来解决这个问题时,我觉得我正在尝试重新发明轮子。
这是解决该问题的一种方法:
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*/