2025-03-06 学习记录--C/C++-PTA 练习8-8 移动字母
合抱之木,生于毫末;九层之台,起于累土;千里之行,始于足下。💪🏻
一、题目描述 ⭐️
二、代码(C语言)⭐️
#include <stdio.h>
#include <string.h>
#define MAXS 10
void Shift( char s[] );
void GetString( char s[] ); /* 实现细节在此不表 */
int main()
{
char s[MAXS];
GetString(s);
Shift(s);
printf("%s\n", s);
return 0;
}
/* 你的代码将被嵌在这里 */
// 将输入字符串的前3个字符移到最后
void Shift(char s[]) {
// 定义一个临时字符数组 str,用于存储字符串 s 的前3个字符
char str[MAXS]; // MAXS 是一个常量,表示数组的最大长度
// 将 s 中的前3个字符复制到 str 中
for (int i = 0; i < 3; i++) {
str[i] = s[i]; // 逐个复制字符
}
str[3] = '\0'; // 手动添加字符串结束符,确保 str 是一个合法的C字符串
// 截取 s 中除去前3个字符后的剩余部分
int start = 3; // 起始位置为第4个字符(下标从0开始)
int length = strlen(s) - start; // 计算剩余字符的长度
// 使用 strncpy 将 s 中从第4个字符开始的剩余部分复制到 s 的开头
strncpy(s, s + start, length); // s + start 表示从第4个字符开始
s[length] = '\0'; // 手动添加字符串结束符,确保 s 是一个合法的C字符串
// 将 str(即前3个字符)拼接到 s 的末尾
strcat(s, str); // strcat 会将 str 的内容追加到 s 的末尾
// 最终结果:s 的前3个字符被移到了字符串的末尾
// 例如,输入 "abcdef",输出 "defabc"
}
三、知识点 ⭐️
截取字符串的方法,请查看我的另一篇文章。