一段难以理解的C++代码

lwnowhy 2010-03-22 09:32:17
我要的是输入一字符串,然后首尾倒置输出,可不知为什么总是出错


#include <iostream>
using namespace std;
int main()
{
char f[11];
char s[11];
cout<<"请输入10字符"<<endl;
cin>>f;
for(int i=0;i<=10;i=i+1)
{
s[9-i]=f[i];
}
cout<<"首尾置换后的字符串"<<endl;
cout<<s<<endl;

return 0;
}


输入为:
asdfghjklp
输出为:
plkjhgfdsa烫asdfghjklp


怎么会这样字?
不要给别的代码,就这段代码帮我找出错误,谢谢
...全文
173 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
cattycat 2010-03-22
  • 打赏
  • 举报
回复
for(int i=0;i<10;i=i+1)
把<=10改成<10
lwnowhy 2010-03-22
  • 打赏
  • 举报
回复
刚下课回来,谢谢大家的帮助,很有用,
bsr2009 2010-03-22
  • 打赏
  • 举报
回复
i = 10的时候 9-10越界了。
nabice 2010-03-22
  • 打赏
  • 举报
回复

#include <iostream>
using namespace std;
int main()
{
char f[11];
char s[11];
cout<<"请输入10字符"<<endl;
cin>>f;
for(int i=0;i<10;i=i+1)
{
s[9-i]=f[i];
}
s[10] = 0;
cout<<"首尾置换后的字符串"<<endl;
cout<<s<<endl;

return 0;
}

某某9 2010-03-22
  • 打赏
  • 举报
回复

s[10]='\0';//字符串末尾要有结束符号
cnpxm 2010-03-22
  • 打赏
  • 举报
回复
这个错误。。。
怎么会弄出个9?
ypb362148418 2010-03-22
  • 打赏
  • 举报
回复
for(int i=0;i<=10;i=i+1)
{
s[9-i]=f[i]; //i最后到10了,减出负值了,注意一下循环的条件 最后字符串结束符要给出
}
jimbrat 2010-03-22
  • 打赏
  • 举报
回复
for(int i=0;i<=10;i=i+1)
{
s[9-i]=f[i];
}
当i等于10时,9-i就成为负值,将9改成10,或者将上面10改为9即可
cattycat 2010-03-22
  • 打赏
  • 举报
回复
s[10]='\0'
f[10]='\0'
字符串末尾要有结束符号
elegant87 2010-03-22
  • 打赏
  • 举报
回复

#include <iostream>
using namespace std;

int main()
{
char f[11];
char s[11];
cout<<"请输入10字符"<<endl;
cin>>f;
for(int i=0;i<10;++i)
{
s[9-i]=f[i];
}
cout<<"首尾置换后的字符串"<<endl;
s[10]='\0'; //字符串结束符
cout<<s<<endl;
return 0;
}
linyongzuo 2010-03-22
  • 打赏
  • 举报
回复

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

int main()
{
char f[11];
char s[11];
cout<<"??入10字符"<<endl;
//char num;
//for(int i=0;i<=10;i++)
//{
//cin>>num;
//f[i] = num;
//}
cin>>f;
for(int i=0;i< 10;i++)
{
s[9-i]=f[i];
}
s[10] ='\0';
cout<<"首尾置?后的字符串"<<endl;
cout<<s<<endl;

return 0;
}

你出现那样的情况是没给字符串加上结束F
SiGoYi 2010-03-22
  • 打赏
  • 举报
回复

把你的字符串数组初始化了
char f[11] = {0};
char s[11] = {0};
pengzhixi 2010-03-22
  • 打赏
  • 举报
回复
for(int i=0;i<10;i=i+1)
{
s[9-i]=f[i];
}
s[10]='\0';
erickies 2010-03-22
  • 打赏
  • 举报
回复
因为你减出了一个s[-1]=f[10]
wuyu637 2010-03-22
  • 打赏
  • 举报
回复
for(int i=0;i<10;i=i+1)
{
s[9-i]=f[i];
}
s[10] = '\0';
pengzhixi 2010-03-22
  • 打赏
  • 举报
回复
s[9-i]=f[i];//s[10-i]=f[i];
Totoro_zwj 2010-03-22
  • 打赏
  • 举报
回复
典型的溢出

64,683

社区成员

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

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