nzr848704474 发表于 2019-12-3 16:40:56

数组课后作业题疑问

#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;
}


while循环结束以后的i》=MAX-1是否可以换成i==MAX-1即可?因为我认为i再怎么样也不可能大于MAX-1

jackz007 发表于 2019-12-3 17:39:22

      没错,i的值不可能大于 MAX - 1。
      下面是我写的代码,可以同时去掉位于字符串前后的 TAB 字符和空格字符。
#include <stdio.h>

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

int main()
{
      char c , str                                                            ;
      int e , k , m                                                                  ;
      printf("请输入一行文本:")                                                   ;
      for(m = 0 ;(c = getchar()) != '\n' && m < MAX - 1 ; str = c)             ;
      for(; (str == 0x09 || str == 0x20) && m > 0 ; str = 0) ;
      for(e = 0 ; (str == 0x09 || str == 0x20) && e < m ; e ++)                ;
      for(k = e ; k < m + 1 ; k ++) str = str                              ;
      printf("你输入的文本是:%s\n", str)                                          ;
}
页: [1]
查看完整版本: 数组课后作业题疑问