我的函数传递了类型的文件名
char *myFilename;
我想将现有扩展名更改为“.sav”,或者如果没有扩展名,只需将“.sav”添加到文件末尾即可。但我需要考虑名为“myfile.ver1.dat”的文件。
任何人都可以告诉我实现这一目标的最佳方法吗?
我正在考虑使用一个函数来查找最后一个“。”并删除其后面的所有字符并将其替换为“sav”。或者如果没有“.”找到后,只需将“.sav”添加到字符串末尾即可。但不知道该怎么做,因为我对字符串的 '\0' 部分感到困惑,以及 strlen 是否返回带有 '\0' 的整个字符串,或者我是否需要对后面的字符串长度 +1。
我希望最终得到一个文件名来传递给 fopen()
。
最佳答案
可能是这样的:
char *ptrFile = strrchr(myFilename, '/');
ptrFile = (ptrFile) ? myFilename : ptrFile+1;
char *ptrExt = strrchr(ptrFile, '.');
if (ptrExt != NULL)
strcpy(ptrExt, ".sav");
else
strcat(ptrFile, ".sav");
然后是传统方式,删除并重命名
关于更改传递的文件名的扩展名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18562000/