这个程序哪里出错了?

jcjunjin 2009-07-03 01:14:40
#include <iostream>
using namespace std;

void main()
{
char file1[128];
char file2[128];

cout<<"请输入字符串:"<<endl;
gets(file1);
cout<<"你输入的字符串为:"<<puts(file1)<<endl;
char a;
cin>>a;

}

运行结果:
请输入字符串:
pp
pp
你输入的字符串为:0
请问这是怎么回事,哪里出错了?

...全文
28 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
ican008 2009-07-03
  • 打赏
  • 举报
回复
因为puts()有返回值,当它输出成功后,返回值0;
所以cout < <"你输入的字符串为:" <<puts(file1) <<endl;输出的是返回值是0;
若想得到想要的结果:
#include <iostream>
using namespace std;

void main()
{
char file1[128];
char file2[128];

cout <<"请输入字符串:" <<endl;
gets(file1);
cout <<"你输入的字符串为:"<<endl;
puts(file1); //将puts(file1);移到后面


}
tangwing 2009-07-03
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 sunnywyg 的回复:]
cout < <"你输入的字符串为:" < <puts(file1) < <endl;


这里相当于是两个函数,
1,puts(file1)

2, int r = puts(file);
cout < < r;
[/Quote]

。。。。。
scsnsjsl_cs_dn 2009-07-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lihan6415151528 的回复:]
改成这样:

C/C++ code
#include <iostream>
using namespace std;

int main()
{
char file1[128];
char file2[128];

cout <<"请输入字符串:" <<endl;
gets(file1);
cout <<"你输入的字符串为:" <<puts(file1) <<endl;
char a;
cin>>a;
return 0;

}





devc++编译 测试通过
[/Quote]
doudouduan 2009-07-03
  • 打赏
  • 举报
回复
关注...
太乙 2009-07-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 baihacker 的回复:]
puts(file1)
这里先把file1输出,然后返回一个0,表示输出成功,然后cout再把这个表示成功的0输出.

所以你,你只要改为
cout < <"你输入的字符串为:";
puts(file1);
就行了
[/Quote]up!
zjf30366 2009-07-03
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 sunnywyg 的回复:]
cout < <"你输入的字符串为:" < <puts(file1) < <endl;


这里相当于是两个函数,
1,puts(file1)

2, int r = puts(file);
cout < < r;
[/Quote]

...
sunnywyg 2009-07-03
  • 打赏
  • 举报
回复
cout <<"你输入的字符串为:" <<puts(file1) <<endl;


这里相当于是两个函数,
1,puts(file1)

2, int r = puts(file);
cout << r;
steven_007 2009-07-03
  • 打赏
  • 举报
回复
puts(file1) 有返回值。
mengjfu 2009-07-03
  • 打赏
  • 举报
回复
puts函数成功输出,则返回输出字节数,失败则返回-1。
楼主输出的是puts的返回值
大前置 2009-07-03
  • 打赏
  • 举报
回复
int puts( char *str );
函数puts()把str(字符串)写到STDOUT(标准输出)上. puts() 成功时返回非负值, 失败时返回EOF
cout<<puts(str );//输出的是puts函数的返回值

puts(str);或 cout<<str;都行的,不要合起来用。
lihan6415151528 2009-07-03
  • 打赏
  • 举报
回复
是不是要这样?

#include <iostream>
using namespace std;

int main()
{
char file1[128];
char file2[128];

cout <<"请输入字符串:" <<endl;
cin>>(file1);
getchar();
cout <<"你输入的字符串为:" <<file1 <<endl;
getchar();
return 0;

}

baihacker 2009-07-03
  • 打赏
  • 举报
回复
puts(file1)
这里先把file1输出,然后返回一个0,表示输出成功,然后cout再把这个表示成功的0输出.

所以你,你只要改为
cout <<"你输入的字符串为:";
puts(file1);
就行了
lihan6415151528 2009-07-03
  • 打赏
  • 举报
回复
改成这样:

#include <iostream>
using namespace std;

int main()
{
char file1[128];
char file2[128];

cout <<"请输入字符串:" <<endl;
gets(file1);
cout <<"你输入的字符串为:" <<puts(file1) <<endl;
char a;
cin>>a;
return 0;

}



devc++编译 测试通过

64,670

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧