看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《lazybones (懶)》之銘言: : 我在MSDN看到以下內容 : : If a file has a long file name, the complete name appears in the cFileName : field, and the 8.3 format truncated version of the name appears in the : cAlternateFileName field. Otherwise, cAlternateFileName is empty. : : 不過我用以下的語法去做判斷時 會出現非預期的情形 : : if(FindFileData.cAlternateFileName != NULL) : printf("FileName Too Long\n"); : : 情形就是不管cAlternateFileName是不是empty : 他都會印出printf()的內容 : 請問版友 是我哪邊弄錯了?又必須怎麼改進 謝謝! : : -- : ★ : ╔╮ ╭═╦╮╭═╦╗╮ ╮╔══╮╭═╦╮╮ ╔╮╔══╮╭══╮ : ╠╣ ╠═╬╣╭╬╩╯╰╦╦╯╠═╦╮║ ╠╣║║╠╣╠╣ ╰═╦╮ : ╠╣ ╭║ ╠╣║╰╔╗ ╠╣ ║ ╠╣║ ╠╣║╰╠╣║╰╔╗║ ╠╣ : ╰╩═╯╰ ╰╝╚═╩╯ ╰╝ ╚═╩╯╰═╩╯╰ ╰╝╚═╩╯╰═╩╯ : : -- : ※ 發信站: 批踢踢實業坊(ptt.cc) : ◆ From: 218.211.0.80 : 推 VictorTom:那個 empty, 是指 "", 還是指 NULL ?? 11/02 18:54 : → VictorTom:其實您也可以試著把它們字串全印出來看一遍就知道了XD 11/02 18:54 : → lazybones:我試過 若是empty 印出來是"" 11/03 09:25 : 推 VictorTom:所以是""不是NULL啊, 那你不能用 != NULL來判斷啊@_@" 11/03 09:40 : → VictorTom:如果它只是普通的char[], 那也許就用strcmp(), 或者更簡 11/03 09:40 : → VictorTom:單判斷第一個char是不是'\0'吧:) 11/03 09:40 : → lazybones:或許我說的不夠清楚...這些我都嘗試過了..囧> 11/03 09:49 : → lazybones:結果都一樣... 11/03 09:49 : → lazybones:所以想說是我哪邊理解錯了...Orz 11/03 09:50 : → lazybones:v謝謝 11/03 09:50 : 推 VictorTom:Err~NULL與""(或者char[0]=='\0')都不行!?小弟也暈了Orz 11/03 09:53 : → lazybones:哈 我再想想看 謝謝喔! 11/03 09:57 小弟大概Google了一下與看了一下MSDN, 用!=NULL應該是肯定錯誤的.... 這裡是MSDN上對 WIN32_FIND_DATA 這個struct的defination.... typedef struct _WIN32_FIND_DATA { DWORD dwFileAttributes; FILETIME ftCreationTime; FILETIME ftLastAccessTime; FILETIME ftLastWriteTime; DWORD nFileSizeHigh; DWORD nFileSizeLow; DWORD dwReserved0; DWORD dwReserved1; TCHAR cFileName[MAX_PATH]; TCHAR cAlternateFileName[14]; }WIN32_FIND_DATA, *PWIN32_FIND_DATA, *LPWIN32_FIND_DATA; 所以cAlternateFileName應該是會配有空間而不會是NULL的.... 那麼判斷""還不行, 從定義來看小弟只想得到問題在TCHAR.... 您用""判斷的code compiler有給warning嗎?? 建議改判斷 _T(""), 或者_T('\0')試試看.... 現在想得到的狀況就是撞到了wild char的case了@_@" -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.134.41.4
lazybones:好!!!非常感謝!!! 11/03 10:04
VictorTom:仔細想想, wild char的'\0'....應該也是0x0000吧?? 11/03 10:07
VictorTom:那照理說錯用'\0'判斷也應該會碰巧正確的啊....Orz 11/03 10:08