user-0 提问: 求教：把txt文件每行的内容倒序后输出

回复:
user: user-0
content: 引用 15 楼 Mr_warm 的回复:1、利用动态分配先搞一个足够大的char型数组。 2、读一行，从数组的尾部开始输出，直到数组的索引减小为0。 3、重复上一步操作，直到文件结束。 4、释放动态分配的内存。 O(∩_∩)O谢谢

user: user-1
content: 1、利用动态分配先搞一个足够大的char型数组。 2、读一行，从数组的尾部开始输出，直到数组的索引减小为0。 3、重复上一步操作，直到文件结束。 4、释放动态分配的内存。

user: user-0
content: 引用 10 楼 baijiaheizhiganmao 的回复:[quote=引用 9 楼 nmgyxx 的回复:] baijiaheizhiganmao 您好，您的程序只能倒序第一行的内容啊，我想把每行的都倒序输出，txt文件中有20000行 哎，无语ing。[/quote] 不好意思啦，谢谢啦

user: user-2
content: 引用 12 楼 nmgyxx 的回复:[quote=引用 11 楼 baijiaheizhiganmao 的回复:] [quote=引用 9 楼 nmgyxx 的回复:] baijiaheizhiganmao 您好，您的程序只能倒序第一行的内容啊，我想把每行的都倒序输出，txt文件中有20000行 #include<iostream> #include<fstream> #include<string> using namespace std; int main() { 	string temp; 	string content(""); 	string outcontent(""); 	//文件读（将文件的内容读出） 	ifstream fin("D:\\test.txt"); 	if(!fin) 	{ 		cout<<"open error1!"<<endl; 		return 0; 	} 	//文件内容保存到outcontent中 	while (getline(fin,temp)) 	{ 		int i = temp.length(); 		for (--i;i>=0;i--) 		{ 			outcontent+=temp[i]; 		} 		outcontent+='\n';		 	} 	fin.close();  	//文件写（将内容写入文件） 	ofstream fout("D:\\test.txt"); 	if(!fout) 	{ 		cout<<"open error2!"<<endl; 		return 0; 	}     	size_t i = outcontent.length(); 	for(size_t j =0;j<i;j++) 	{ 		fout<<outcontent[j]; 	} 	fout.close();     	return 0; }[/quote] 不知道您有没有检验过您的这个程序吗，我运行了一下，没有错误但是一直运行都没有终止，这是为什么呢？[/quote] 你觉得我会没有运行过吗？下面的结果是你想要的吗？不是的话就一定要把需求说清除。 ----源文件的东西------ 4321 8765 dvca ytrq srew dsac dead awdc ----程序运行完毕后文件内部变化------ 1234 5678 acvd qrty wers casd daed cdwa  请注意：2000行数据比较多，一定要在程序运行完毕后再打开文件。还有，运行程序的时候关闭要操作的文件。

user: user-0
content: 引用 11 楼 baijiaheizhiganmao 的回复:[quote=引用 9 楼 nmgyxx 的回复:] baijiaheizhiganmao 您好，您的程序只能倒序第一行的内容啊，我想把每行的都倒序输出，txt文件中有20000行 #include<iostream> #include<fstream> #include<string> using namespace std; int main() { 	string temp; 	string content(""); 	string outcontent(""); 	//文件读（将文件的内容读出） 	ifstream fin("D:\\test.txt"); 	if(!fin) 	{ 		cout<<"open error1!"<<endl; 		return 0; 	} 	//文件内容保存到outcontent中 	while (getline(fin,temp)) 	{ 		int i = temp.length(); 		for (--i;i>=0;i--) 		{ 			outcontent+=temp[i]; 		} 		outcontent+='\n';		 	} 	fin.close();  	//文件写（将内容写入文件） 	ofstream fout("D:\\test.txt"); 	if(!fout) 	{ 		cout<<"open error2!"<<endl; 		return 0; 	}     	size_t i = outcontent.length(); 	for(size_t j =0;j<i;j++) 	{ 		fout<<outcontent[j]; 	} 	fout.close();     	return 0; }[/quote] 不知道您有没有检验过您的这个程序吗，我运行了一下，没有错误但是一直运行都没有终止，这是为什么呢？

user: user-3
content: #define MAXL 1024 char ln[MAXL]; FILE *f; ... f=fopen(fname,"r"); ... while (1) {  if (NULL==fgets(ln,MAXL,f)) break;  if ('\n'==ln[strlen(ln)-1]) ln[strlen(ln)-1]=0;  strrev(ln);  printf("%s\n",ln); } fclose(f);

user: user-2
content: 引用 9 楼 nmgyxx 的回复:baijiaheizhiganmao 您好，您的程序只能倒序第一行的内容啊，我想把每行的都倒序输出，txt文件中有20000行 #include<iostream> #include<fstream> #include<string> using namespace std; int main() { 	string temp; 	string content(""); 	string outcontent(""); 	//文件读（将文件的内容读出） 	ifstream fin("D:\\test.txt"); 	if(!fin) 	{ 		cout<<"open error1!"<<endl; 		return 0; 	} 	//文件内容保存到outcontent中 	while (getline(fin,temp)) 	{ 		int i = temp.length(); 		for (--i;i>=0;i--) 		{ 			outcontent+=temp[i]; 		} 		outcontent+='\n';		 	} 	fin.close();  	//文件写（将内容写入文件） 	ofstream fout("D:\\test.txt"); 	if(!fout) 	{ 		cout<<"open error2!"<<endl; 		return 0; 	}     	size_t i = outcontent.length(); 	for(size_t j =0;j<i;j++) 	{ 		fout<<outcontent[j]; 	} 	fout.close();     	return 0; }

user: user-2
content: 引用 9 楼 nmgyxx 的回复:baijiaheizhiganmao 您好，您的程序只能倒序第一行的内容啊，我想把每行的都倒序输出，txt文件中有20000行 哎，无语ing。

user: user-0
content: baijiaheizhiganmao 您好，您的程序只能倒序第一行的内容啊，我想把每行的都倒序输出，txt文件中有20000行

user: user-3
content: _strrev, _wcsrev, _mbsrev Reverse characters of a string.  char *_strrev( char *string );  wchar_t *_wcsrev( wchar_t *string );  unsigned char *_mbsrev( unsigned char *string );  Routine Required Header Compatibility  _strrev <string.h> Win 95, Win NT  _wcsrev <string.h> or <wchar.h> Win 95, Win NT  _mbsrev <mbstring.h> Win 95, Win NT    For additional compatibility information, see Compatibility in the Introduction.  Libraries  LIBC.LIB Single thread static library, retail version  LIBCMT.LIB Multithread static library, retail version  MSVCRT.LIB Import library for MSVCRT.DLL, retail version    Return Value  Each of these functions returns a pointer to the altered string. No return value is reserved to indicate an error.  Parameter  string  Null-terminated string to reverse  Remarks  The _strrev function reverses the order of the characters in string. The terminating null character remains in place. _wcsrev and _mbsrev are wide-character and multibyte-character versions of _strrev. The arguments and return value of _wcsrev are wide-character strings; those of _mbsrev are multibyte-character strings. For _mbsrev, the order of bytes in each multibyte character in string is not changed. These three functions behave identically otherwise.   Generic-Text Routine Mappings  TCHAR.H Routine  _UNICODE & _MBCS Not Defined _MBCS Defined _UNICODE Defined  _tcsrev _strrev  _mbsrev  _wcsrev     Example  /* STRREV.C: This program checks an input string to  * see whether it is a palindrome: that is, whether  * it reads the same forward and backward.  */  #include <string.h> #include <stdio.h>  void main( void ) {    char string[100];    int result;     printf( "Input a string and I will tell you if it is a palindrome:\n" );    gets( string );     /* Reverse string and compare (ignore case): */    result = _stricmp( string, _strrev( _strdup( string ) ) );    if( result == 0 )       printf( "The string \"%s\" is a palindrome\n\n", string );    else       printf( "The string \"%s\" is not a palindrome\n\n", string ); }   Output  Input a string and I will tell you if it is a palindrome: Able was I ere I saw Elba The string "Able was I ere I saw Elba" is a palindrome   String Manipulation Routines  See Also   strcpy, _strset

user: user-2
content: #include<iostream> #include<fstream> #include<string> using namespace std; int main() { 	string content(""); 	string outcontent(""); 	//文件读（将文件的内容读出） 	ifstream fin("D:\\test.txt"); 	if(!fin) 	{ 		cout<<"open error1!"<<endl; 		return 0; 	} 	//文件内容保存到outcontent中 	fin>>outcontent;  	fin.close();  	//文件写（将内容写入文件） 	ofstream fout("D:\\test.txt"); 	if(!fout) 	{ 		cout<<"open error2!"<<endl; 		return 0; 	}	 	//退出时按ctrl+z 	size_t i = outcontent.length(); 	for(int j =--i ;j>=0;j--) 	{ 		fout<<outcontent[j]; 	} 	fout.close();	 	return 0; }

user: user-4
content: 是每行吧,不用整个文件吧. 读行的函数fstream里面有吧

user: user-5
content: stack.push  stack.pop

user: user-6
content: 用fseek函数，从最末尾往头开始fgetc后输出。同意

user: user-7
content: 用fseek函数，从最末尾往头开始fgetc后输出。  引用 楼主 nmgyxx 的回复:把txt文件每行的内容倒序后输出，例如ABCD，输出后为DCBA，谢谢                                    1234          4321

user: user-8
content: google 字符串倒序