2015-06-27 103 views
0

我的代碼有問題,我希望你能幫忙。我不會發布所有的代碼,因爲它有點長,但我會專注於麻煩的部分。 該程序是關於數組的代數運算。 read_array2從文件讀取第一個nxn實數並將它們放入全局數組中。問題是我總是收到相同的信息「我無法打開這個文件」。我甚至添加了一個printf()來測試名稱是否正確存儲在fname中,並且我發現它是。是的,我已經驗證了我使用的文件存在,並且我正確輸入了他們的名字。 我不知道它是否重要,但文件有10000個實數由一個空格分隔。 我知道,如果沒有所有可用的代碼都很難說清楚,但是您是否發現了可能導致此問題的不合適的地方?打開文件問題

int read_array2(double table[N_MAX][N_MAX], int n){ 
int i, j; 
FILE *infile; 
char fname[25]; 

printf("\nFile Name: "); 
scanf("%s",&fname); 

if ((infile = fopen(fname,"r")) == NULL){ 
    printf("\nI cannot open this file.\n"); 
    return 1; 
} 

for (i = 0; i < n; i++) 
    for(j = 0; j < n; j++){ 
    fscanf(infile, "%lf ", &table[i][j]); 
} 

fclose(infile); 

return 0; 
} 
+1

你在正確的目錄嗎?還是你輸入完整的路徑?如果是這樣,那25個字符就足夠了嗎?另外,它可能是另一個程序鎖定了文件嗎?也許是權限問題?你在哪個平臺上? – GolezTrol

+0

我自己測試了一下代碼,確保第一部分工作(不在fopen後測試),假定文件位於同一目錄中,並且文件名很小。 – missimer

+0

我是個白癡。我將程序文件保存在不同的目錄中,並未將文件複製到同一文件夾中。由於.c文件存在於兩個文件夾中,我以爲我打開了正確的文件。感謝和抱歉的混淆。 –

回答

1

您是否還記得輸入文件的擴展名?例如:要打開名爲「MyFile」的文本文件,您需要輸入「MyFile.txt」。另外,如果它不在程序的同一目錄中,則還需要包含完整路徑。注意:文件名區分大小寫,並且在輸入路徑時,您需要轉義轉義符「\\」或使用'/',即C:\\ Users \\ MyFile.txt或C:/Users/MyFile.txt

+0

問題在於我將程序保存在第二個目錄中後,我沒有複製同一文件夾中的文件。謝謝回覆。 –