2015-05-24 34 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

你的意思是這樣使用變量作爲參數傳遞給fopen()

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

: 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

如果你想將「.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

我通常在'fgets'之後使用'sprintf'來爲文件建立文件名,因爲它允許我對它進行一點格式化。例如,如果我有一個名爲「Expedient_123456.txt」的文件,我可以要求用戶輸入一個數字,然後構建文件名,如「Expedient_%d.txt」。 –