合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻
一、题目描述 ⭐️
二、代码(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
语言 截取字符串的三种方法,请查看我的另一篇文章。