2010-07-20 66 views
0

我使用Createfile函數創建文件。 C程序工作正常,但我無法在相應的文件夾中看到創建的文件。 也選中「查看隱藏文件」選項。Createfile函數

+0

在MineSweeper中實現這種效果非常困難。 – leppie 2010-07-20 07:04:35

+0

向我們展示代碼!除了Raymond Chen之外,心理調試並不是一個發達的領域。 – paxdiablo 2010-07-20 07:05:42

+0

請顯示一些代碼。 – Philipp 2010-07-20 07:06:11

回答

0

您可以通過檢查返回的HANDLE值來檢查函數是否正常工作。

編輯:如果一個函數失敗,C程序將繼續運行(不正確)。因此檢查每個返回的手柄非常重要。

編輯:返回的HANDLE不應該是INVALID_HANDLE_VALUE。 (但我可以想象,NULL也不好)。

+0

'CreateFile'不返回'HRESULT'。 – Philipp 2010-07-20 07:04:32

+0

是的,功能只能正常工作。 我檢查了返回值(0)。 – Pradeep 2010-07-20 07:05:27

+0

功能如下所示: memset(message_file,0x00,sizeof(cmdline)); sprintf(message_file,「D:\\ temp2 \\ a.txt」); FD =的CreateFile(message_file,GENERIC_READ | GENERIC_WRITE, \t \t \t \t \t \t FILE_SHARE_READ | FILE_SHARE_WRITE,NULL, \t \t \t \t \t \t OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL); if(fd == INVALID_HANDLE_VALUE) { return 1; } 執行上面的操作後,我檢查了文件夾D:\ temp2,沒有文件存在。 – Pradeep 2010-07-20 09:03:02

0

有兩件事要檢查。第一,它真的成功了嗎?從docs

返回值
         如果函數成功,返回值是打開的句柄到指定的文件,設備,命名管道或郵件插槽。
           如果函數失敗,則返回值爲INVALID_HANDLE_VALUE。要獲得更多的錯誤信息,請致電GetLastError

第二,你看在正確的地方。通常,在IDE中運行其代碼的人員並不知道他們當前的工作目錄並不總是他們的想法。您可以system("cd");或類似的東西,看看它實際是什麼。

或者,您可以使用絕對路徑名來確保正確的位置創建文件(用於測試,即 - 您應該永不對生產代碼使用絕對路徑)。

如果這兩個建議都不能解決問題,您應該發佈顯示特定問題的代碼。最好足夠,以便我們不必回來並要求更多。

相關問題