C++自行输入文件名打开文本文件

定义了两个全局变量charname[50];ifstreamfp(name,ios::in);voidmain(){cin>>name;if(!fp)cout<<"打开错... 定义了两个全局变量
char name[50];
ifstream fp(name,ios::in);
void main()
{
cin>>name;
if(!fp)
cout<<"打开错误";
else{};
}
每次我输入文件名包括扩展名之后他总是说打开错误
如果把ifstream fp(name,ios::in);改为ifstream fp(“1.txt”,ios::in);(1.txt为文本名)就可以打开,求解
展开
 我来答
Bk0X
2012-12-30 · TA获得超过9413个赞
知道小有建树答主
回答量:1217
采纳率:60%
帮助的人:671万
展开全部
这是当然的. 你的fp是全局变量, 全局变量的构造在main之前, 也就是说你cin之前fp就已经尝试打开文件了, 这个时候name还是空, 自然不行.

void main()
{
char name[50];
ifstream fp; // 先不打开文件, 等待输入

cin>>name;
fp.open(name,ios::in); // fstream的open函数用来打开一个文件

if(!fp)
cout<<"打开错误";
else{};
}
_whales
2012-12-30 · TA获得超过2279个赞
知道大有可为答主
回答量:1814
采纳率:85%
帮助的人:507万
展开全部
在main里,cin后定义fp就可以了!不然打开一个空串为名的文件当然打不开了。注意name的第一个客字符是0,以后也全0,文件打开执行结束才进入main时,再输入文件名,也没有什么用了。都出错过了,亡羊补牢,为时筷矣!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhou2214
推荐于2018-03-22 · TA获得超过706个赞
知道小有建树答主
回答量:495
采纳率:0%
帮助的人:512万
展开全部
char name[50];
ifstream fp(name,ios::in);
void main()
{
cin>>name;
fp.clear();
fp.open(name);
if(!fp)
cout<<"打开错误";
else{cout<<"success!!";};
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式