按要求打印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;
}

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

时间: 2024-08-30 12:54:06

按要求打印20个字符的相关文章

使用文档对象在页面上创建学生信息表。 信息表包括学号、姓名、性别、电子邮件、联系电话、个人主页和联系地址, 信息表内容通过表单输入,提交前先使用正则表达式进行验证,联系地址不能超过20个字符, 每输入一名学生的信息,提交后,表格增加一行,表格不能被选择、复制。

<!DOCTYPE html><html>    <head>        <meta charset="UTF-8">        <title></title>    </head>    <!--        描述:使用文档对象在页面上创建学生信息表.        信息表包括学号.姓名.性别.电子邮件.联系电话.个人主页和联系地址,        信息表内容通过表单输入,提交前先使用

易飞-凭证打印异常(字符中含有空格,自动分行导致显示异常)

在打印凭证中通常会显示自定义或者输入的内容.比如:在电子行业中的插件位置,生产人员经常在作业的时候经常会根据领料单显示的插件位置来作业. 至于为何不根据作业指导书或者BOM等其他方式来确认不在今天我们讨论的范围. 解决办法一:直接行高加大.当然可以,但是如果只是为了一张工单中的几个元件的插件位置显示而已,增加了纸张打印.从成本节约角度不太实用 解决办法二:评估了最多字符也可以在两行中显示完毕的情况下,自动分行差一两个字符的话,就把字体设置小点. 现在问题是,为和第二行中CA9,之后就自动分行了呢

input输入框限制20个字符,十个汉字

英文和数字为一个字符,汉字为两个字符 在 Web 开发中,经常要对表单元素的输入进行限制,比如说不允许输入特殊字符,标点.通常我们会监听 input 事件: inputElement.addEventListener('input', function(event) { let regex = /[^1-9a-zA-Z]/g; event.target.value = event.target.value.replace(regex, ''); event.returnValue = false

java算法面试题:有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数 按值的降序排序,如果值相同则按键值的字母顺序

package com.swift; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; public class Zhongwen_Shuzi_Times { public static void main(String[] args) { /* * 有一个字符串,其中包含中文字符.英文字符和数字字符,请统计和打印出各个字符的个数 */ String str="琅琊榜fengqichanglin

有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数。 有一个字符串,其中包含中文字符、英文字符和数字字符,请统计和打印出各个字符的个数

1.有一个字符串,其中包含中文字符.英文字符和数字字符,请统计和打印出各个字符的个数. Map接口定义的集合又称查找表,用于存储所谓"Key-Value"映射对.Key可以看成是Value的索引,作为Key的对象在集合中不可以重复. import java.util.HashMap; import java.util.Map; public class Demo { public static void main(String[] args) throws Exception{ Str

易飞-凭证打印异常(字符中含有空格,自己主动分行导致显示异常)

在打印凭证中一般会显示自己定义或者输入的内容.比方:在电子行业中的插件位置,生产人员常常在作业的时候常常会依据领料单显示的插件位置来作业. 至于为何不依据作业指导书或者BOM等其它方式来确认不在今天我们讨论的范围. 解决的方法一:直接行高加大.当然能够,可是假设仅仅是为了一张工单中的几个元件的插件位置显示而已,添加了纸张打印.从成本节约角度不太有用 解决的方法二:评估了最多字符也能够在两行中显示完成的情况下,自己主动分行差一两个字符的话,就把字体设置小点. 如今问题是,为和第二行中CA9,之后就

java:打印菱形图案(传参打印的自定义字符和行数)

打印菱形图案: 代码实现: public class Hello { public static void main(String args[]) { LingXingPrint("#", 7); } public static void LingXingPrint(String i, int num) { /** * 打印菱形,传参:i 为打印的字符,num为行数 . * 思路:将菱形分为上三角和下三角,上三角:每一行空格打印数为总行数-行号:每一行字符打印个数为2*行号-1;下三角

C语言打印二维字符数组

C语言不经常用,都快忘了.平时还得多用才熟练啊! #include<stdio.h> void func1(int m , char *str[]){ int i =0 ;  printf("%s\n", "int func1------"); for(; i<m ; i++){ printf("%s\n", str[i]); } } void func2(int m , char **str){ int i =0 ;  pri

输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。

package myprac.LeetCode; import java.util.ArrayList; import java.util.List; public class StringPermutation { /* public static ArrayList<String> Permutation(String str) { ArrayList<String> list = new ArrayList<>(); if(str==null || str.len