Weabu 发表于 2022-11-21 21:07:22

数组

#include <stdio.h>

#define MAX 21
int main()
{
    int space, i = 0;
    char str;

    printf("请输入一行文本是:");
    while ((str = getchar()) != '\n')
    {
      /*
      if (i >= MAX) // Q:当输入大于21字符时,不会获取‘\n’
      {
            break;
      }
      */
      if (str == ' ' && i <= MAX) //记录空格位置
      {
            space = i;
      }
    };
    printf("%d\n", i);

    if (i >= MAX - 1) //当输入字符大于21时,使结尾断在离21最近的空格
    {
      str = '\0';
    }

    if (i <= MAX) //当输入字符少于21时,可以正常输出
    {
      str = '\0';
    }

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

    return 0;
}


问题1:当输入字符少于21时,输出会多出一行
eg:请输入一行文本是:fdssdfa
8
你输入的文本是:fdssdfa



问题2:当输入大于21字符时,输出不了
@Twilight6 @风车呼呼呼 @jackz007

jackz007 发表于 2022-11-21 21:17:05

本帖最后由 jackz007 于 2022-11-21 22:14 编辑

      你的代码不完整,能不能把你的代码贴入代码框?
#include <stdio.h>

#define MAX 21

int main()
{
      int space , i , n                                                ;
      char str                                                    ;
      printf("请输入一行文本是:")                                     ;
      for(n = 0 ; (str = getchar()) != '\n' && n < MAX - 1 ; n ++);
      for(; n && str == ' ' ; n --) str = '\0'         ;
      str = '\0'                                                    ;
      if(n == MAX - 1) {
                for(i = n ; i && str != ' ' ; i --)               ;
                if(i) str = '\0'                                  ;
      }
      printf("你输入的文本是:%s\n" , str)                           ;
}

Weabu 发表于 2022-11-21 21:59:10

jackz007 发表于 2022-11-21 21:17
你的代码不完整,能不能把你的代码贴入代码框?

这就是全部的代码呀

jackz007 发表于 2022-11-21 22:12:42

Weabu 发表于 2022-11-21 21:59
这就是全部的代码呀

      看看你贴出的代码,斜体部分就是 [ i ] 被吞噬后把 [ i ] 作为斜体指令给过滤掉了。
      2 楼给出了修改后的代码,你可以试试看。
页: [1]
查看完整版本: 数组