实现输入字符串多指定范围的截取输出(c语言)

该博客探讨了如何在C语言中根据用户输入的列标实现字符串的截取和输出。首先介绍实现要求,如接收多个一一对应的列标(以负数结束输入),然后解释所需的库函数如strlen和strncpy。接着详细描述了读取列标并存储到数组,以及执行字符串截取的函数。最后,给出了完整代码示例及效果,并提出了对于非递增列标和末尾列标处理的思考问题。
摘要由CSDN通过智能技术生成

                         QQ:3020889729                                                                                 小蔡

本文章旨在于学习总结。

实现要求

  1. 首行输入需要截取列标,可输入多个,但应该是一一对应的(总是一对数字),以负数作为输入结束判断。
  2. 输入字符串——按列标要求截取输出。

实现需要的库

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

引用的函数

  1. strlen(x) :计算字符串长度
  2. strncpy(y,x,n) :复制x中指定长度字符串到y中
  3. exit() :异常退出

实现思路

/*
1.首先处理输入的列标,将它们一一对应的保存到一个数组中,然后判断结束。
2.然后对输入的字符串进行与一对列标差的值对应的字符串截取,但是这里用strncpy即可;
因为有多对列标需要处理,所以会用到for循环。
(其它处理中的问题,在代码中会具体分析)
*/

代码(函数式编程)

读取输入的列标,并存入一个数组

用一个函数处理列标的读取,传入参数为,事先创建好的整型数组的指针(首地址)和 数组大小。
(数组存储需要处理的一个个列标)

//int columns[],声明一个数组形参
int read_column_numbers(int columns[], int max)
{
    int num = 0;
    int ch;

    //获取列标号
    // 判断列标以及列标数目是否满足条件
    // 负数,意味着列标录入结束
    while(num < max && scanf("%d", &columns[num])  && columns[num] >= 0) 
    {
        num += 1;  // 准备下一个列标的存取和检测
    }

    // 验证列标数目是否为偶数——输入的有效列标应该是一一对应的
    if(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

NULL not error

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值