2014-02-17 54 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