每日一题: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;
}
相关推荐
Ulyanov5 小时前
高保真单脉冲雷达导引头回波生成:Python建模与实践
开发语言·python·仿真·系统设计·单脉冲雷达
plus4s6 小时前
2月12日(70-72题)
算法
m0_672703316 小时前
上机练习第24天
算法
阿猿收手吧!6 小时前
【C++】jthread:优雅终止线程新方案
开发语言·c++
lly2024066 小时前
《JavaScript 实例》
开发语言
edisao6 小时前
序幕-内部审计备忘录
java·jvm·算法
十五年专注C++开发6 小时前
C++中各平台表示Debug的宏
开发语言·c++·debug
shehuiyuelaiyuehao6 小时前
22Java对象的比较
java·python·算法
张小凡vip6 小时前
Python异步编程实战:基于async/await的高并发实现
开发语言·python
玩c#的小杜同学7 小时前
源代码保卫战:给C# 程序(混淆、加壳与反逆向实战)
开发语言·笔记·c#