每日一题:C语言经典例题之字符串的处理

题目描述

字符串的输入输出处理。

输入

第一行是一个正整数N,最大为100。之后是多行字符串(行数大于N), 每一行字符串可能含有空格,字符数不超过1000。

输出

先将输入中的前N行字符串(可能含有空格)原样输出,再将余下的字符串(不含有空格)以空格或回车分割依次按行输出。每行输出之间输出一个空行。

代码:

复制代码
#include <stdio.h>
#include <string.h>

#define MAX_LINES 100
#define MAX_LINE_LENGTH 1001

int main() {
    int N;
    scanf("%d", &N);

    char lines[MAX_LINES][MAX_LINE_LENGTH];
    int current_line = 0;

    while (current_line < N && fgets(lines[current_line], MAX_LINE_LENGTH, stdin)) {
        ++current_line;
    }

    // 输出前N行(含空格)
    for (int i = 0; i < current_line; ++i) {
        printf("%s", lines[i]);
        if (i < current_line - 1) {  // 不在最后一行时输出换行符
            printf("\n");
        }
    }

    // 输出剩余行(不含空格)
    char no_space_line[MAX_LINE_LENGTH];
    while (fgets(lines[current_line], MAX_LINE_LENGTH, stdin)) {
        // 去除字符串中的空格
        int len = strlen(lines[current_line]);
        int j = 0;
        for (int i = 0; i < len; ++i) {
            if (lines[current_line][i] != ' ') {
                no_space_line[j++] = lines[current_line][i];
            }
        }
        no_space_line[j] = '\0';  // 添加结束符

        printf("%s\n", no_space_line);  // 输出当前行
        printf("\n");  // 输出一个空行

        ++current_line;
    }

    return 0;
}
相关推荐
进击的小头5 分钟前
IIR滤波器核心原理深化:从差分方程到工业级实现
c语言·python·算法
学嵌入式的小杨同学6 分钟前
【Linux 实战】Makefile 自动化构建进阶:静态库 / 动态库通用模板(一键编译 + 系统安装)
linux·开发语言·git·vscode·spring·vim·ux
小孟的CDN8 分钟前
一维热传导方程的PINN求解——损失函数实时绘制
开发语言·python
透明的玻璃杯11 分钟前
VS2015+QT5程序发布
开发语言·qt
AllData公司负责人15 分钟前
【亲测好用】数仓建模平台能力演示
大数据·数据库·算法
爱学习的阿磊16 分钟前
自定义操作符重载指南
开发语言·c++·算法
fenglllle23 分钟前
使用fyne做一个桌面ipv4网段计算程序
开发语言·go
zhuanggoahead34 分钟前
拓扑排序(Kahn算法)
网络·数据结构·c++·算法·排序算法
上海合宙LuatOS37 分钟前
LuatOS框架的使用(2)
java·服务器·开发语言·前端·数据库·嵌入式硬件·php
一起养小猫38 分钟前
Flutter for OpenHarmony 实战 文件存储与数据库操作完全指南
开发语言·jvm·数据库·spring·flutter·harmonyos