這不是我的代碼;我試圖弄清楚這到底是什麼。這是用C編寫的一個古老的大系統的一部分(實際上它是在4年前編寫的,但很可能是由80年代後期的程序員心態編寫的)。部分代碼:此代碼是否刪除文件擴展名?
char DestFile[256];
char DestFile2[256];
//This part is just to show an example
strcpy(DestFile, "/foo/boo/goo.gz")
strcpy (DestFile2, DestFile);
Ptr = strrchr (DestFile2, '.');
if (Ptr != 0) {
if ((strcmp (Ptr, ".gz") == 0) ||
(strcmp (Ptr, ".Z") == 0)) {
*Ptr = 0;
rename (DestFile, DestFile2);
}
}
DestFile2未在函數的其他位置設置。我編譯了上面的代碼,並且打印出DestFile顯示沒有任何變化。我唯一能想到的就是刪除文件擴展名(* Ptr = 0),但是我對C的瞭解非常有限......
任何想法?它看起來像每次獲取帶有.gz或.z的文件時,都會將該文件重命名爲相同的名稱。
請注意,rename()函數可能會失敗,但此代碼不會更明智 - 測試可能失敗的函數是否會失敗,特別是涉及文件時。 – 2008-11-15 17:00:25