2015-06-27 3 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

Проблема заключалась в том, что я не копировал файлы в одной папке после того, как сохранил программу во втором каталоге. Спасибо за ответ. –

Смежные вопросы