VerySource

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 975|回复: 3

119!~紧急 !~设计一个程序cuts

[复制链接]

2

主题

2

帖子

2.00

积分

新手上路

Rank: 1

积分
2.00
发表于 2020-1-23 11:00:01 | 显示全部楼层 |阅读模式
设计一个程序cuts,它由标准输入读取数据,获取由第一个参数n和第二个参数m所限定范围的数据,n和m都是整数,即从输入的字符串中抽取第n个字符至第m个字符之间的所有字符(包括这两个字符)。例如:
$cuts 11  14
this is a test of cuts program(键入)
test(显示结果)
5
回复

使用道具 举报

0

主题

13

帖子

9.00

积分

新手上路

Rank: 1

积分
9.00
发表于 2020-2-8 11:00:01 | 显示全部楼层
#include <stdio.h>
#include <stdlib.h>

#define MAX_STR 100

int main(int argc, char* argv[]) {
  int start, end, len;
  char str[MAX_STR];
  char output[MAX_STR];

  if(argc < 3) {
    printf("Not enough parameters!\n");
    printf("Usage: %s start end\n", argv[0]);
    exit(0);
  }

  start = atoi(argv[1]);
  --start;
  end = atoi(argv[2]);
  --end;
  if(start > end) {
    printf("start > end!\n");
    exit(0);
  }

  if(start < 0) start = 0;
  fgets(str, MAX_STR, stdin);
  len = strlen(str);
  if(end > len - 1) end = len - 1;
  strncpy(output, str+start, end-start+1);
  output[end-start+1] = '\0';
  printf("%s", output);
}
回复

使用道具 举报

0

主题

13

帖子

9.00

积分

新手上路

Rank: 1

积分
9.00
发表于 2020-2-8 12:00:01 | 显示全部楼层
C++的版本:

#include <iostream>

int main(int argc, char* argv[]) {
  int start, end, len;
  std::string str;

  if(argc < 3) {
    std::cout << "Not enough parameters!\n";
    exit(0);
  }

  start = atoi(argv[1]);
  end = atoi(argv[2]);
  --start;
  --end;
  if(start > end) {
    std::cout << "start > end!\n";
    exit(0);
  }

  if(start < 0) start = 0;
  std::cin >> str;
  std::cout << str.substr(start, end-start+1) << std::endl;
}
回复

使用道具 举报

0

主题

13

帖子

9.00

积分

新手上路

Rank: 1

积分
9.00
发表于 2020-2-8 13:45:01 | 显示全部楼层
Linux下可直接用cut命令:
cut -c N-M
N和M分别为start、end
Ctrl-D退出
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|CopyRight © 2008-2023|verysource.com ( 京ICP备17048824号-1 )

快速回复 返回顶部 返回列表