首页 > 编程语言 >C程序设计语言(第2版·新版)练习题1-18

C程序设计语言(第2版·新版)练习题1-18

时间:2024-09-01 20:55:38浏览次数:16  
标签:练习题 int 18 char ++ len1 lim 程序设计 line

练习1-18 编写一个程序,删除每个输入行末尾的空格及制表符,并删除完全是空格的行。


#include <stdio.h>

#define MAXLINE 1000

int getline(char s[], int lim);
int remove_tail(char s[]);

int main(int argc, char *argv[]) {
    (void)argc;
    (void)argv;
    
    int len, len1;
    char line[MAXLINE];
    
    while ((len = getline(line, MAXLINE)) > 0) {
        len1 = remove_tail(line);
        if (len1 > 0) {
            printf("[%d]%s", len1, line);
        }
    }
    return 0;
}

int getline(char s[], int lim)
{
    int c, i;
    for (i = 0; i < lim - 1 && (c = getchar()) != EOF && c != '\n'; i++) {
        s[i] = c;
    }
    if (c == '\n') {
        s[i] = c;
        i++;
    }
    s[i] = '\0';
    return i;
}

int remove_tail(char s[])
{
    int i = 0;
    while(s[i] != '\0') {
        i++;
    }
    i--;
    if (s[i] == '\n') {
        i--;
    }
    while (i >= 0 && (s[i] == '\t' || s[i] == ' ')) {
        i--;
    }
    if (i >= 0) {
        s[++i] = '\n';
        s[++i] = '\0';
    }
    return i;
}

运行结果:

标签:练习题,int,18,char,++,len1,lim,程序设计,line
From: https://blog.csdn.net/VincentKCSDN/article/details/141759236

相关文章

  • C程序设计语言(第2版·新版)练习题1-19
    练习1-19 编写函数reverse(s),将字符串s中的字符顺序颠倒过来。使用该函数编写一个程序,每次颠倒一个输入行中的字符顺序。#include<stdio.h>#defineMAXLINE1000intgetline(chars[],intlim);voidreverse(chars[]);intmain(intargc,char*argv[]){(vo......
  • HJ18 识别有效的IP地址和掩码并进行分类统计
    题意…真的…好多…让人误会的地方T_T最大的教训就是,处理略微复杂以上的题目,一定要拆分成很多个子程序来写,不要一大堆东西扔在主程序里硬写,很容易出错还难调试。哦,第二个教训就是一定要自己手算一下样例,搞明白题意再写题!!!不要看着题面觉得很容易就自己YY!!T_T题目没什么好说的,思路......
  • 程序设计训练3.11数码管
    程序设计训练3.11数码管【问题描述】液晶数码管用七笔阿拉数字表示的十个数字,把横和竖的一 个短划都称为一笔,即7有3笔,8有7笔等。对于十个数字一种排列,要做到两相邻数字都可以由另一个数字加上几笔或减去几笔组成,但不能又加又减。比如 7→3是允许的,7→2不允许。任意输入一组数,判断是......
  • 基于Python的机器学习系列(18):梯度提升分类(Gradient Boosting Classification)
    简介        梯度提升(GradientBoosting)是一种集成学习方法,通过逐步添加新的预测器来改进模型。在回归问题中,我们使用梯度来最小化残差。在分类问题中,我们可以利用梯度提升来进行二分类或多分类任务。与回归不同,分类问题需要使用如softmax这样的概率模型来处理类别标......
  • Markdown学习20221418曾庆林
    一、我掌握的内容1.Markdown及其基本的语法(标题,有序列表,代码)2.线下工具vscode二、我没有掌握的内容1.markdown详细语法(斜体,无序列表,链接,引用,分割线,表格)2.线上工具3.插入公式,绘图,格式转换4.ChatGPT等AIGC的提示词工程中的应用三、实践斜体*列表百度![图片]()终......
  • AI工具20221418曾庆林
    1.我知道的AI大数据模型平台:文心一言,chatgpt,科大讯飞2.提升学习效率的例子:(1)写作辅导:在写作某些文章时,例如一些读后感或者红色主题演讲的时候,由于平时的积累不是很够,写的时候不是很有思路,使用文心一言后可以给出一定的思路,由此可以进行文章的写作(2)课程内容的深度学习:在上学期的......
  • A-计算机毕业设计定制:18099居家养老服务系统(免费领源码)可做计算机毕业设计JAVA、PHP
    摘  要1绪论1.1研究背景1.2研究意义1.3主要研究内容1.4论文章节安排2 相关技术介绍2.1Node.JS编程语言2.2MySQL数据库3 系统分析3.1可行性分析3.1.1技术可行性分析3.1.2经济可行性分析3.1.3操作可行性分析3.2系统流程分析3.2.1 ......
  • Ethercat设备数据 转IEC61850项目案例
    目录1 案例说明 12 VFBOX网关工作原理 13 准备工作 25 设置网关采集ETHERCAT数据 56 用IEC61850协议转发数据 77 网关使用多个逻辑设备和逻辑节点的方法 98 安装NPCAP 109 案例总结 111 案例说明设置网关采集EtherCAT设备数据把采集的数据转成IEC61850协议转发给其他系......
  • Ethercat设备数据 转IEC61850项目案例
    目录1 案例说明 12 VFBOX网关工作原理 13 准备工作 25 设置网关采集ETHERCAT数据 56 用IEC61850协议转发数据 77 网关使用多个逻辑设备和逻辑节点的方法 98 安装NPCAP 109 案例总结 111 案例说明设置网关采集EtherCAT设备数据把采集的数据转成IEC61850协议转发给其他......
  • 一个操作系统的设计与实现——第18章 欢迎回来
    18.1引言我们已经实现了一个运行在保护模式下的操作系统,然而,读者朋友也许不会满足:如今早已是多核CPU,64位操作系统的时代,而我们的操作系统仅仅是单核CPU,32位的。因此,从本章开始,我们将在32位单核操作系统的基础上,将其升级为一个64位多核操作系统。18.2准备工作我们仍然使用boch......