c++ 程序问题,求大神帮助啊!!!!!!

下面程序①中Switch函数中的switch命令不能成功调用Create函数
而去掉Switch函数中的switch命令直接调用Create函数则成功,参见程序②
具体问题是本人测试时程序②:输出“please”,输入a,输出“存储成功!”。程序①:输入1,输出please,不能再输入了。
程序①:

#include <fstream>
#include <iostream>
using namespace std;

int Create()
{ofstream outfile("f2.dat");
if(! outfile)
{cerr<<"open f2.dat error"<<endl;
exit(1);
}
char c[80];
cout<<"please"<<endl;
cin.getline(c,80);
for(int a=0;c[a]!=0;a++)
if(c[a]>=65&&c[a]<=90||c[a]>=97&&c[a]<=122)
{outfile.put(c[a]);
cout<<"储存成功!";}
cout<<endl;
outfile.close();}

int Switch()
{ int a;
cin>>a;
switch (a)
{case 1:Create();break;
default:cout<<"error!"<<endl;}return 0;}

int main()
{Switch();
return 0;
}

函数②

#include <fstream>
#include <iostream>
using namespace std;

int Create()
{ofstream outfile("f2.dat");
if(! outfile)
{cerr<<"open f2.dat error"<<endl;
exit(1);
}
char c[80];
cout<<"please"<<endl;
cin.getline(c,80);
for(int a=0;c[a]!=0;a++)
if(c[a]>=65&&c[a]<=90||c[a]>=97&&c[a]<=122)
{outfile.put(c[a]);
cout<<"储存成功!";}
cout<<endl;
outfile.close();}

int Switch()
{Create();
return 0;}

int main()
{Switch();
return 0;
}

程序①要怎么改?

程序①修改后:
#include <fstream>
#include <iostream>
using namespace std;

void Create()
{
ofstream outfile("f2.dat");
if(! outfile)
{
cerr<<"open f2.dat error"<<endl;
exit(1);
}
char c[80];
cout<<"please"<<endl;
//cin.getline(c,80);
cin>>c;
for(int a=0;c[a]!=0;a++)
{
if(c[a]>=65&&c[a]<=90||c[a]>=97&&c[a]<=122)
{
outfile.put(c[a]);
cout<<"储存成功!"<<endl;
}
}
cout<<endl;
outfile.close();
}

int Switch()
{
int a;
cin>>a;
switch (a)
{
case 1:
Create();
break;
default:
cout<<"error!"<<endl;
}
return 0;
}

int main()
{
Switch();

return 0;
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-07-04
//修改如注释所示
#include <fstream>
#include <iostream>
using namespace std;

int Create()
{ofstream outfile("f2.dat");
if(! outfile)
{cerr<<"open f2.dat error"<<endl;
exit(1);
}
char c[80];
cout<<"please"<<endl;
cin.getline(c,80);
for(int a=0;c[a]!=0;a++)
if(c[a]>=65&&c[a]<=90||c[a]>=97&&c[a]<=122)
{outfile.put(c[a]);
cout<<"储存成功!";}
cout<<endl;
outfile.close();
return 0; //另外这里还需要这个返回值
}

int Switch()
{ int a;
cin>>a; //这里输入数字后 还有一个回车换行符在缓冲区中
fflush(stdin);//功能:清空输入缓冲区,通常是为了确保不影响后面的数据读取(例如在读完一个
//字符串后紧接着又要读取一个字符,此时应该先执行fflush(stdin);
switch (a)
{case 1:Create();break; //这里调用的函数紧接着是取一行遇见回车就结束了,所以获取
//回车换行符 就执行下边程序了
default:cout<<"error!"<<endl;}return 0;}

int main()
{Switch();
return 0;
}

// fflush(stdin);//功能:清空输入缓冲区, 故这个在字符与数字混同输入的时候有非常重要的作用追问

也谢谢这位大神哈~~

追答

不客气,不过能赞同一下也好啥

相似回答