jkjkre
jkjkre
采纳率88.9%
2019-03-15 20:22

【C语言】将字符串逆序,为什么输出的时候多一个?号

#include <stdio.h>
#include <string.h>
int main(){
    char a[6],b[6];
    int i,j,len;
    gets(a);
    len=strlen(a);
    for(i=0;a[i]!='\0';++i);
    for(j=0;i>=0;i--,j++)
    b[j]=a[i-1];
    b[j]='\0';
    puts(b);

return 0;

输入是abc
输出是cba?
其中【?】哪里来的,为啥会多一个问好

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

3条回答

  • ylwanlxm ylwanlxm 2年前

    我加了}后,用vc运行还不行,我将 for(j=0;i>=0;i--,j++)改成了for(j=0;i>0;i--,j++)就可以了,代码如下,使用vc运行没问题
    #include
    #include
    int main(){
    char a[6],b[6];
    int i,j,len;
    gets(a);
    len=strlen(a);
    for(i=0;a[i]!='\0';++i);
    for(j=0;i>0;i--,j++)
    b[j]=a[i-1];
    b[j]='\0';
    puts(b);

    return 0;
    

    }

    点赞 1 评论 复制链接分享
  • ovo935 ovo935 2年前

    你这个代码里面最后面少了一个}符号,加了}符号后我用Dev c++来运行是没有问题的

    #include <stdio.h>
    #include <string.h>
    int main(){
        char a[6],b[6];
        int i,j,len;
        gets(a);
        len=strlen(a);
        for(i=0;a[i]!='\0';++i);
        for(j=0;i>=0;i--,j++)
        b[j]=a[i-1];
        b[j]='\0';
        puts(b);
        return 0;
    }
    
    点赞 2 评论 复制链接分享
  • weixin_43891901 CodeLinghu 2年前

    修改的正确答案:

    #include <stdio.h>
    #include <string.h>
    int main() 
    {
        char a[6], b[6];
        int i, j, len;
        gets(a);
        len = strlen(a);
        for (i = 0; a[i] != '\0'; ++i);
        for (j = 0; i>0; i--, j++)
            b[j] = a[i - 1];
        b[j] = '\0';
        puts(b);
    
        return 0;
    }
    

    你知道你的错误吗?
    for (j = 0; i>=0; i--, j++)这个语句中,你的i是不能为0的,因为你下面有一个语句是:
    b[j]=a[i-1];当i=0时,a[-1]就出来了。

    点赞 评论 复制链接分享