2014-02-17 53 views
0

如何將多行寫入文件? ...這就是我所擁有的......此外,一些行還包含如下文字:#import <Foundation/Foundation.h>我該如何去做這件事?下面的代碼是我現在..C++將文本寫入文件,如何多行

//Creates Config.h 
     FILE * pFile; 
     char *buffer = "//Empty Header File"; 
     char file [256]; 
     sprintf (file , "%s/Desktop/%s/Control.h",homeDir, game_name); 
     pFile = fopen (file, "w+"); 
     fwrite (buffer , sizeof(char), sizeof(buffer), pFile); 
     fclose (pFile); 
+0

你想使用C或C++嗎? – Beta

+0

如果您想要像現在一樣使用'C'功能,則結束符是'\ n'。如果你想切換到'C++',使用'std :: endl'。 –

+0

用C++請 – user3316925

回答

0

更改爲

sprintf (file , "%s/Desktop/%s/Control.h\n",homeDir, game_name); 

\ n - 是一個新的行代碼。

0

在C++中,你會做這樣的:

ofstream fout("someplace/Control.h"); 
fout << "a line of text" << endl; 
fout << "another line of text" << endl; 

我漏掉了像如何構建一個文件名以及如何在「追加」模式下打開一個文件中的一些細節,但你應該嘗試一次解決一個問題。

1

由於這是C++,我建議你使用標準的IOStreams庫,並使用具體的文件流類std::ifstreamstd::ofstream來處理文件。它們實現了RAII來處理文件的關閉,並使用內置的運算符和成員函數分別執行格式化和未格式化的I/O。此外,它們與標準C++字符串類std::basic_string的使用很好地融合在一起。

雖這麼說,如果我們實現這個在C++中正確的,它應該是這樣的:

std::string path  = "/Desktop/"; 
std::string filename = homeDir + path + game_name + "/Control.h"; 

std::ofstream file(filename, std::ios_base::app); 

這個處理打開該文件,但你說你希望寫多行到一個文件中。這很簡單。只要使用'\n'每當你想提出一個新行:

file << buffer << '\n'; 

如果你給我們介紹一下你的問題的詳細信息,我將能夠更詳細地說明在我的答案。但在你做之前,以上就足夠了。

+0

我喜歡這個解釋,但是文件名不正確。就目前而言,結果將相當於'std :: string filename = homeDir +「%s/Desktop /%s/Control.h」;'這不是我們所期望的。它應該更像'std :: string filename = homeDir +「/ Desktop /」+ game_name +「/Control.h」;'。 – Andrew

+1

@Andrew是的,我剛剛改變了這一點。謝謝。 :) – 0x499602D2