按要求打印20个字符

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 21

//要求 A:定义一个长度为 21 的字符数组,用于存放用户输入的文本;
//要求 B:如果用户输入的文本长度超过 20 个字符,
//且文本中存在空格,则截取至最接近末尾(第 20 个字符串)的空格;
//要求 C:如果用户输入的文本长度超过 20 个字符,
//且文本中不存在空格,则打印前 20 个字符
int main()
{
 int ch, space, i = 0;
 //i为文本输入时的位置
 //ch是输入的文本
 char str[MAX];
 space = MAX - 1; // 下标为 0-20,space为数组最后一个元素下标

 printf("请输入一行文本:"); 

 while ((ch = getchar()) != '\n'){ //遇到回车跳出while循环
  str[i++] = ch;
  if (i == MAX - 1){ //当输入达到20字符,跳出if循环
   break;
  }
  if (ch == ' '){  
   //遇到空格时,记录空格位置(在while循环内,会一直更新i,直到循环结束)
   space = i;
  }
 }
 if (i >= MAX - 1){
  str[space] = '\0';//输入文本过多,有空格则截取接近末尾的空格
  //文本没有空格,截取前20字符,再加结束符'\0'
 }
 else{
  str[i] = '\0';//少于20字符,直接加'\0'
 }
 printf("您输入的文本是:%s\n", str);

 system("pause");
 return 0;
}

posted @ 2020-03-31 11:36  听说在北郭  阅读(370)  评论(0)    收藏  举报