2012-07-06 81 views
2

我一直在尋找一段時間才能找到答案,但找不到解決方案。基本上我試圖讀取和寫入我的電腦的C盤中的文件。但是,因爲它是Windows 7,它選擇在背後痛苦,而不是允許我的C程序來做到這一點。我試圖以管理員模式運行它,並嘗試使用不同的目錄。 當下面的代碼運行:由於權限,無法在Windows 7中使用fopen進行讀取或寫入

FILE *fp = fopen(strIn, "r"); 
if(fopen(strIn, "r") == NULL) 
{ 
    printf("Error: %d (%s)\n", errno, strerror(errno)); 
    getchar(); 
} 

返回的錯誤是「錯誤13權限被拒絕」。我知道微軟不太喜歡使用fopen,因爲它傾向於使用fopen_s,但我發現在理解如何實現它時遇到困難,而且它也缺乏資源。有沒有解決這個問題的方法,因爲它現在真的讓我回頭了。大加讚賞,

傑克

+0

您嘗試過哪些路徑?在之前的Windows中,Unicode路徑一直是fopen的一個問題。 – stefan 2012-07-06 07:54:21

+0

那麼它被輸入爲單個用戶削減。例如「C:\ dtm100m \」然後放入一個char數組。這是什麼意思/ – Jackter 2012-07-06 08:04:24

+0

不是真的。請列出失敗的''strIn''的一些例子。 – stefan 2012-07-06 08:13:03

回答

5

您的代碼打開文件兩次:

FILE *fp = fopen(strIn, "r"); 
if(fopen(strIn, "r") == NULL) /* Second open, leaks FILE *! */ 

這可能會導致錯誤,因爲Windows可以被挑剔允許文件被多次打開。第二行應爲:

if(fp == NULL) 
+1

如果我正確記得fopen()的Windows實現以獨佔模式打開文件。 – Luke 2012-07-06 13:54:47

相關問題