C语言输出有误,多输出了乱码,求助!!

soundbean 2021-01-25 09:04:10

#include<stdio.h>
void alter(char a[])
{
int i;
for(i=3;i>=0;i--)
{
a[2*i+1]=a[i];
a[2*i]=' ';
}
puts(a);

}
int main()
{
char a[40];
printf("输入一个四位数:\n");
scanf("%s",&a);
alter(a);
return 0;
}


为什么多输出了后面的东西?
...全文
253 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
soundbean 2021-01-27
  • 打赏
  • 举报
回复
引用 8 楼 阿麦的回复:
先把数组 a 初值设置为 \0 就可以。 但是更好的习惯是注意防患内存溢出:字符串以 \0 结尾,且不能超出定义长度

void alter(char a[])
{
    int i;
    int len = strlen(a);
    if (len > 19)
    {
        len = 19;
        a[19] = '\0';
    }
    for(i=len; i>=0; i--)
    {
        a[2*i+1]=a[i];
        a[2*i]=' ';   
    }
    puts(a);
}
华东师大的大佬!!! 谢谢谢谢 学到了学到了
自信男孩 2021-01-26
  • 打赏
  • 举报
回复
for循环从4开始吧,因为需要考虑到'\0',字符串需要以'\0'结束。

阿麦 2021-01-26
  • 打赏
  • 举报
回复
先把数组 a 初值设置为 \0 就可以。 但是更好的习惯是注意防患内存溢出:字符串以 \0 结尾,且不能超出定义长度

void alter(char a[])
{
    int i;
    int len = strlen(a);
    if (len > 19)
    {
        len = 19;
        a[19] = '\0';
    }
    for(i=len; i>=0; i--)
    {
        a[2*i+1]=a[i];
        a[2*i]=' ';   
    }
    puts(a);
}
soundbean 2021-01-25
  • 打赏
  • 举报
回复
引用 3 楼 云中屋的回复:
没有结束符就一直往下打印直到遇到结束符,下面是一种修改方式的代码,供参考。

#include<stdio.h>
void alter(char a[])
{
    int i;
    for(i=3;i>=0;i--)
    {
        a[2*i+1]=a[i];
        a[2*i]=' ';   
    }
    a[2*4] = '\0'; //在最后增加一个结束符 
    puts(a);
     
}
int main()
{
    char a[40];
    printf("输入一个四位数:\n");
    scanf("%s",&a);
    alter(a);
    return 0;
}
OK 我明白了 谢谢谢谢
soundbean 2021-01-25
  • 打赏
  • 举报
回复
引用 1 楼 forever74的回复:
你没处理结束符,多一个就行。 for(i=4;i>=0;i--)
谢谢大佬 十分感谢
云中小筑 2021-01-25
  • 打赏
  • 举报
回复
没有结束符就一直往下打印直到遇到结束符,下面是一种修改方式的代码,供参考。

#include<stdio.h>
void alter(char a[])
{
    int i;
    for(i=3;i>=0;i--)
    {
        a[2*i+1]=a[i];
        a[2*i]=' ';   
    }
    a[2*4] = '\0'; //在最后增加一个结束符 
    puts(a);
     
}
int main()
{
    char a[40];
    printf("输入一个四位数:\n");
    scanf("%s",&a);
    alter(a);
    return 0;
}
chxchxkkk 2021-01-25
  • 打赏
  • 举报
回复
少了个'\0'
forever74 2021-01-25
  • 打赏
  • 举报
回复
你没处理结束符,多一个就行。 for(i=4;i>=0;i--)

69,337

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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