2015-01-08 2 views
0

Я хочу открыть файл abc.txt в папке «../ab cd/Output». То, что я сделал до сих пор является:Открыть txt-файл, присутствующий в каком-либо другом каталоге в C

char temp1[100], temp2[10] = "abc.txt"; 
strcpy(temp1, "../ab\ cd/Output/"); 
FILE *fp_minenergy = fopen(strcat(temp1, temp2), "r"); 

Исполняя это дает ошибку сегментации.

+1

Вы говорите, что вы используете C++, почему вы не используете простой зЬй :: строка вместо сырой CSTRING манипуляции здесь? Разве это не было бы более запутанным для вас? Ваш код, опубликованный, даже не будет компилироваться, вы забыли котировки вокруг abc.txt. – tux3

+1

Кроме того, это не оболочка. Вам не нужно ничего скрывать в строке. –

+0

, потому что вход filename будет взят из argv [i], который имеет формат cstring. Извините за типографию – user1465557

ответ

1

Проблема должна быть только путь к файлу сам

fopen("../ab cd/Output/abc.txt", "r"); 

Фактическая path не является действительным «../ аб \ кд/выход/abc.txt», вам не нужно бежать здесь ничего ,

+0

Вы сделали опечатку. "../ab cd" not "../ab" – tux3

+0

Hipeter, имя папки "ab cd" не "ab". – user1465557

+0

О, я вижу. Я думал, что «cd» должен быть оболочкой, встроенной в команду «cd». Как упоминалось в «Темном соколе», здесь ничего не нужно. – Peter

0
char dirname[51] = "/the/directory"; 
char filename[51] = "the_file_name.txt"; 
char full_name[101] = strcat("/the/directory","/"); 
char full_name = strcat(full_name,filename); 
FILE *fp_minenergy = fopen(full_name, "r"); 

Я добавляю дополнительный strcat для /, потому что я не знаю, откуда это название каталога. Кто-то может указать его без трейлинга /. Если они укажут/в имени, это не повредит.

/реж/один равно реж // два

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