老牛来学习 发表于 2020-3-1 19:29:39

S1E19第二题

下面这段代码中:if (i >= MAX - 1)这段代码中的“>=”,但是按我理解上述代码运行到这最多也就MAX-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;
                if (i == MAX - 1)
                {
                        break; // 到了字符数组最后一个位置
                }
                if (ch == ' ')
                {
                        space = i; // 记录最后一个空格的位置
                }
      }

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

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

      return 0;
}

小钓鱼 发表于 2020-3-6 18:45:59

两种写法都可以

就是要努力呀 发表于 2020-3-7 11:41:08

>=更安全一些
如果因为某些原因导致i!= max-1(比如i没有初始化)
那你这个循环就会一直下去 会发生数组的越界
页: [1]
查看完整版本: S1E19第二题