码迷,mamicode.com
首页 > 其他好文 > 详细

按要求打印20个字符

时间:2020-03-31 12:07:01      阅读:85      评论:0      收藏:0      [点我收藏+]

标签:else   回车   print   记录   循环   超过   ace   turn   过多   

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

按要求打印20个字符

标签:else   回车   print   记录   循环   超过   ace   turn   过多   

原文地址:https://www.cnblogs.com/Leafbud/p/12604016.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!