输出字符为什么是乱码?

longjunhua 2004-09-04 11:13:30
string = "today is a hot day";
将其逆序为“day hot a is today”
我想的是
用字符串数组来存放单词,然后从高到低输出

#include<iostream>
using namespace std;

int main()
{
char a[]="today is a hot day";
char a1[5][8];
int i,k,j=0;

for(i=0,k=0;a[i];i++,k++)
if(a[i]==' ')
{
a1[j][k]='\0';
j++;
k=0;
}
else
a1[j][k]=a[i];
a1[j][k]='\0';

for(;j>=0;j--)
cout<<a1[j]<<' ';

return 0;
}

可输出的时候,每个单词的第一个字符总是乱码,不知道为什么!
请教!
...全文
201 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
longjunhua 2004-09-05
  • 打赏
  • 举报
回复
哎呀,居然是这里错了,也怪自己太粗心了!行,结帖!
loveliu0429 2004-09-04
  • 打赏
  • 举报
回复
我想因为你的a1[][]未赋初值,所以会产生随机乱码
我只用C,所以用C写的
loveliu0429 2004-09-04
  • 打赏
  • 举报
回复

#include<stdio.h>
#include<string.h>
int main()
{
char a[]="today is a hot day";

char a1[5][8]={''};
int i=0,k,j=0;

for(k=0;a[i]!='\0';i++,k++)
{ if(a[i]==' ')
{
a1[j][k]='\n';
j++;
k=-1;
}
else
a1[j][k]=a[i];
}
a1[4][3]='\n';
for (j=4;j>=0;j--)
for(k=0;k<=7;k++)
printf("%c",a1[j][k]);
getch();
return 0;
}
summer6074 2004-09-04
  • 打赏
  • 举报
回复
你用标准库的模板站不是很好吗?
何苦折磨自己呢?
hkiaipc 2004-09-04
  • 打赏
  • 举报
回复
if(a[i]==' ')
{
a1[j][k]='\0';
j++;
k=0; //k= -1;
}
pacman2000 2004-09-04
  • 打赏
  • 举报
回复
呵呵,k=0之后,下一个循环立刻就k++了,所以a1[j][0]就没给值。
shenyiwen 2004-09-04
  • 打赏
  • 举报
回复
k=0应该为k=-1
shenyiwen 2004-09-04
  • 打赏
  • 举报
回复
sorry, 看错了
shenyiwen 2004-09-04
  • 打赏
  • 举报
回复
j在循环后越界
goodluckyxl 2004-09-04
  • 打赏
  • 举报
回复
for 最后的语句
在执行完成后再执行的
在你遇到' '后判断是空格,k = 0
意图到最后k = 0起始a[j][0]赋值
但是他不管结束不结束要执行完k++

64,648

社区成员

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

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