2012-10-03 56 views
-1

我正在編寫管理純文本文件的程序的代碼。問題是我怎樣才能生成一個文件,使用fopen(),字符串的長度爲X如何在C中生成名稱爲X的文件?

我的意思是X是用戶只能輸入一個字母作爲文件("a.txt")的名稱,但他也可以輸入一個非常長的名稱("this_is_my_super_new_file_bla_bla_bla.txt")

我試圖做一個鏈表,但我不知道如何將鏈表的節點的char部分傳遞給參數fopen()

有沒有另一種方法呢?我不想做的唯一事情就是限制名字的長度。如果我這樣做,我將不得不從一開始就保留內存,這會讓我的程序更重。

+1

數列表的長度, 'malloc'是一個合適的內存塊,將列表中的'char's一個接一個地複製到數組中,然後添加一個0結束符,並將其傳遞給'fopen'。 –

+0

更嚴重的是,如果您可以假設POSIX,請使用'getline'從用戶那裏獲取文件名。如果不是,請滾動您自己的獲取輸入和分配按需例程。 –

+0

目前尚不清楚你在做什麼?字符串包含什麼,文件名應該是什麼? – epsalon

回答

0

假設你有一個字符串(char *)的文件名,你想添加的「.txt」擴展,那麼你可以做這樣的事情:

char *input = "new_file_name"; 
char *filename = malloc((strlen(input) + 5) * sizeof(char)); 
sprintf (filename, "%s.txt", input); 
FILE *file = fopen(filename, "w"); 
free(filename); 
相關問題