【PTA数据结构 | C语言版】字符串截取子串操作

本专栏持续输出数据结构题目集,欢迎订阅。

文章目录

题目

请编写程序,截取给定字符串 s 中从第 pos 个字符开始的 len 个字符并输出。

输入格式:
输入首先在一行中给出非空主串 s,不超过 1000 个字符,以回车结束(回车不算在字符串内)。第二行给出位序 pos 和待截取的字符个数 len(均为正整数,保证不超过 s 的长度)。

输出格式:
在一行中输出截取到的字符串。

输入样例 1:
This is a test.
6 6

输出样例 1:
is a t

输入样例 2:
This is a test.
7 12

输出样例 2:
s a test.

代码

#include <stdio.h>
#include <string.h>

int main() {
    char s[1001];
    int pos, len;
    
    // 读取输入字符串
    fgets(s, sizeof(s), stdin);
    // 去除换行符
    if (s[strlen(s)-1] == '\n') {
        s[strlen(s)-1] = '\0';
    }
    
    // 读取截取位置和长度
    scanf("%d %d", &pos, &len);
    
    // 计算实际截取的字符数
    int actual_len = len;
    int str_len = strlen(s);
    if (pos + actual_len - 1 > str_len) {
        actual_len = str_len - pos + 1;
    }
    
    // 截取并输出子字符串
    if (actual_len > 0) {
        s[pos + actual_len - 1] = '\0';  // 截断字符串
        printf("%s\n", s + pos - 1);     // 从pos-1位置开始输出
    } else {
        printf("\n");  // 无字符可截取时输出空行
    }
    
    return 0;
}
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋说

感谢打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值