我想消除txt文件末尾的额外'\ n'。在c / c ++中可以使用哪个函数来完成这项工作。
谢谢高级
答案 0 :(得分:0)
一种方法是使用getline逐行迭代文件,以便以后保存该数据。读取每一行后,写入上一行(使用\n
)。当没有更多数据可用时,不再使用\n
写下最后一行。
或者寻找最终获取大小,以一些块大小的块读取数据,重写它们直到倒数第二个字符。如果最后一个字符是\n
,请不要写它,否则写下来。
答案 1 :(得分:0)
执行此操作的posix方法是truncate函数。 如果使用seek或其他OS调用获取文件的长度,则可以使用truncate to 修剪文件长度的最后一个字符,而不重写整个文件。
//This RESIZES the file without the need to REWRITE the whole thing:
struct stat fileStat;
stat("Filename", &fileStat);
status = truncate("Filename",fileStat.st_size-1);
windows等效函数是chsize,但它需要先打开一个文件:
// Open a file
if( _sopen_s( &fh, "data", _O_RDWR | _O_CREAT, _SH_DENYNO,
_S_IREAD | _S_IWRITE ) == 0 )
{
if( ( result = _chsize( fh, _filelength( fh ) -1 ) ) == 0 )
printf( "Size successfully changed\n" );
else
printf( "Problem in changing the size\n" );
_close( fh );
}