揽星辰. 2021-02-06 13:40 采纳率: 25%
浏览 32
已采纳

c语言关于字符串问题

题目是给出一个字符串,例如I am a student.     要输出student. a am I

为什么我下面这段代码输出的是student. 哪里出现了问题。

#include <string.h>
int main()
{
    int i,j,k,l,x;
    char s[1000],str[1000];
    while(gets(s)!=NULL)
    {
        x=strlen(s);
        for(i=x,l=x,j=0;i>=0;i--)
        {
            if(s[i]==' '&&s[i+1]!=' ')
            {
                for(k=i+1;k<=l;k++)
                {
                    str[j++]=s[k];
                }
                str[j++]=' ';
                l=i-1;
            }
            else continue;
        }
        str[j]='\0';
        printf("%s",str);
    }
    return 0;

  • 写回答

2条回答 默认 最新

  • 蒟蒻一枚 2021-02-06 19:03
    关注

    大佬的代码有以下两个问题:

    1.在 for(i=x,l=x,j=0;i>=0;i--)这个循环里,因为字符串S的下标是从0到|S|-1,所以i和l的初始值应该为x-1。

    2.还是这个循环,因为第一个单词前面不一定有空格,所以运行时第一个单词不会输出。应该特殊判断边界情况。

    小学五年级的蒟蒻,说得不一定全对,对的地方大佬可以参考一下。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 请问各位,如何在Jetson nano主控板的Ubuntu系统中安装PyQt5
  • ¥15 MAC安装佳能LBP2900驱动的网盘提取码
  • ¥400 微信停车小程序谁懂的来
  • ¥15 ATAC测序到底用什么peak文件做Diffbind差异分析
  • ¥15 安装ubantu过程中第一个vfat 文件挂载失败
  • ¥20 GZ::CTF如何兼容一些靶机?
  • ¥15 etcd集群部署问题
  • ¥20 谁可以帮我一下问一下各位
  • ¥15 为何重叠加权后love图的SMD与svyCreateTableOne函数绘制基线表的不一致
  • ¥150 求 《小魔指》街机游戏机整合模拟软件