2015-05-24 20 views
1

может fopen() назвать ваш собственный файл? НапримерНазовите свой собственный файл

printf("Enter the name of the file you want to create"); 
scanf("%s", &name); 

Затем я хочу, чтобы отсканированное имя было именем файла, который я хочу создать. Есть какой-либо способ сделать это? Я знаю, что вы можете просто

fp = fopen("name of file.txt","w or a") 

но что, если пользователь запрашивает имя самого файла?

+0

Вы имеете в виду что-то вроде этого: http://stackoverflow.com/questions/612097/how-can-i-get-the-list-of-files-in-a-directory-using-c-or-c? – displayname

+2

Или вы имеете в виду «могу ли я написать« fp = fopen (name, «w») 'использовать имя файла, предоставленного пользователем?» Если да, то ответ «да». – Simon

+0

@simon, как вы можете преобразовать его в txt-файл? единственная вещь, которую он показывает, - это имя и без его расширения –

ответ

3

Используйте переменную в качестве аргумента в fopen()

fgets(name, sizeof name, stdin); 
name[strlen(name) - 1] = 0; // remove ENTER from name 
fp = fopen(name, "w"); 
// error checking ommited for brevity 

Если вы хотите добавить «.txt» на вход, используйте strcat() например

fgets(name, sizeof name - 4, stdin); // save space for extension (thanks Cool Guy) 
name[strlen(name) - 1] = 0; // remove ENTER from name 
strcat(name, ".txt"); // add extension 
fp = fopen(name, "w"); 
// error checking ommited for brevity 
+0

Я обычно использую 'sprintf' после' fgets' для создания имени файла для файла, потому что он позволяет мне немного отформатировать его. Например, если у меня есть файлы с именем «Expedient_123456.txt», я могу задать пользователю номер и затем создать имя файла, например «Expedient_% d.txt». –

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