求教:一个简单的文件操作的一个bug,但是没弄明白怎么解决

如下,一个转写文件的程序

#include<iostream>
#include<iomanip>
#include<fstream>

using namespace std;
int main()
{
	char Name[30], ch, ch2, ch0, row[1024];
	cout << "请输入需要打开的文件名:";
	cin >> Name;
	fstream orgfile(Name, ios::in);
	if (!orgfile)
	{
		cout << "打开文件失败!" << endl;
		exit(0);

	}
	cout << "打开文件成功!\n";
	fstream newfile("new.txt", ios::in|ios::out);
	if (!newfile)
	{
		cout << "打开文件失败!" << endl;
		exit(0);

	}
	cout << "打开新文件成功!\n";
	ch0 = '.';
	while (!orgfile.eof())
	{
		orgfile.get(ch);	
		if (ch >= 'A' && ch <= 'Z' || ch >= 'a' && ch <= 'z'||ch=='.')
		{
			if (ch0 == '.')
			{
				ch2 = ch;
				newfile.put(ch2);
			}
			else
			{
				ch2 = tolower(ch);
				newfile.put(ch2);
			}
			ch0 = ch;
		}
		else
		{
			orgfile.get(ch);
			newfile.put(ch);
		}
	}
	cout << "转换成功!";
	orgfile.close();
	newfile.close();
	return 0;
}

 在原文件不以'.'结尾时一切正常,但是如果以'.'结尾则会出现问题:新文件末尾多出一个'.',

如下:

原文件:DzA.cgfdhrtrgsgfnfASDFEGWFdergfGER....DVFVERVxew.

新文件:DzA.cgfdhrtrgsgfnfASDFEGWFdergfGER....DVFVERVxew..

请问是什么导致的,如何修改?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值