Bootstrap

2025-03-07 学习记录--C/C++-PTA 习题8-5 使用函数实现字符串部分复制

合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻

一、题目描述 ⭐️

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、代码(C语言)⭐️

#include <stdio.h>
#define MAXN 20

void strmcpy( char *t, int m, char *s );
void ReadString( char s[] ); /* 由裁判实现,略去不表 */

int main()
{
    char t[MAXN], s[MAXN];
    int m;

    scanf("%d\n", &m);
    ReadString(t);
    strmcpy( t, m, s );
    printf("%s\n", s);

    return 0;
}

/* 你的代码将被嵌在这里 */
#include <string.h> // 引入字符串处理库,用于使用 strlen 和 strncpy 函数

// 函数功能:从字符串 t 的第 m 个字符开始复制到字符串 s 中
void strmcpy(char *t, int m, char *s) {
    int start = m - 1; // 计算起始位置(从0开始)
    // 例如,m = 2 表示从第2个字符开始,start = 1(数组下标从0开始)

    int length = strlen(t) - m + 1; // 计算截取的长度
    // strlen(t) 是字符串 t 的总长度
    // 例如,t = "Hello", m = 2,length = 5 - 2 + 1 = 4

    // 使用 strncpy 从 t 的第 m 个字符开始复制 length 个字符到 s 中
    strncpy(s, t + start, length);
    // t + start 表示从第 m 个字符开始
    // length 是要复制的字符数

    s[length] = '\0'; // 手动添加字符串结束符,确保 s 是一个合法的C字符串
    // strncpy 不会自动添加 '\0',因此需要手动添加
}

在这里插入图片描述

三、知识点 ⭐️

C语言 截取字符串的三种方法,请查看我的另一篇文章

在这里插入图片描述

;