Christopher. 发表于 2020-8-16 10:53:34

大佬们帮忙看一下这个题吧

要求 A:定义一个长度为 21 的字符数组,用于存放用户输入的文本;
要求 B:如果用户输入的文本长度超过 20 个字符,且文本中存在空格,则截取至最接近末尾(第 20 个字符串)的空格;
要求 C:如果用户输入的文本长度超过 20 个字符,且文本中不存在空格,则打印前 20 个字符。



#include <stdio.h>
#include <string.h>

#define MAX 21 // 包含结束符就是21个字符

int main()
{
      int ch, space, i = 0;
      char str;

      space = MAX - 1;

      printf("请输入一行文本:");
      while ((ch = getchar()) != '\n')
      {
                str = ch;
                if (i == MAX - 1)
                {
                        break; // 到了字符数组最后一个位置
                }
                if (ch == ' ')
                {
                        space = i; // 记录最后一个空格的位置
                }
      }

      if (i >= MAX - 1)
      {
                str = '\0';
      }
      else
      {
                str = '\0';
      }

      printf("你输入的文本是:%s\n", str);

      return 0;
}







这段代码最后的那个if语句没看懂,i不是只能=MAX-1吗,求解答

巴巴鲁 发表于 2020-8-16 10:59:56

你输入几个字符,i就等于几
这个if是看是否满足题目的后两个要求

Christopher. 发表于 2020-8-16 11:08:45

巴巴鲁 发表于 2020-8-16 10:59
你输入几个字符,i就等于几
这个if是看是否满足题目的后两个要求

哦哦哦,懂了,就是看超过20个字符的那两个情况对吧

巴巴鲁 发表于 2020-8-16 12:33:55

Christopher. 发表于 2020-8-16 11:08
哦哦哦,懂了,就是看超过20个字符的那两个情况对吧

对,你每次输入一个字符,i加以1
#include <stdio.h>
#include <string.h>

#define MAX 21 // 包含结束符就是21个字符

int main()
{
      int ch, space, i = 0;
      char str;

      space = MAX - 1;

      printf("请输入一行文本:");
      while ((ch = getchar()) != '\n')
      {
                str = ch; // 每当输入一个非回车字符,i+1
                if (i == MAX - 1)
                {
                        break; // 到了字符数组最后一个位置
                }
                if (ch == ' ')
                {
                        space = i; // 记录最后一个空格的位置
                }
      }

      if (i >= MAX - 1) // 判定输入的字符数是否大于等于20(最后有一个'\0')
      {
                str = '\0';
      }
      else
      {
                str = '\0';
      }

      printf("你输入的文本是:%s\n", str);

      return 0;
}

巴巴鲁 发表于 2020-8-16 12:34:49

如果问题解决了,给个最佳吧{:10_256:}

Christopher. 发表于 2020-8-16 12:36:08

巴巴鲁 发表于 2020-8-16 12:34
如果问题解决了,给个最佳吧

好的,对了大佬我还有个疑问,他的那个ch为什么定义为int型,那ch=getchar()这个是怎么实现的,不是很懂

巴巴鲁 发表于 2020-8-16 12:41:53

Christopher. 发表于 2020-8-16 12:36
好的,对了大佬我还有个疑问,他的那个ch为什么定义为int型,那ch=getchar()这个是怎么实现的,不是很懂

我们通常都是用char定义字符,这样好理解
但是定义char不一定是字符型,也可能是整型,看你怎么用了,char和int只是取值范围不同
getchar()是输入一个字符,然后把输入的值赋给ch

Christopher. 发表于 2020-8-16 12:54:07

巴巴鲁 发表于 2020-8-16 12:41
我们通常都是用char定义字符,这样好理解
但是定义char不一定是字符型,也可能是整型,看你怎么用了,cha ...

好的谢谢啦
页: [1]
查看完整版本: 大佬们帮忙看一下这个题吧