题目描述
题目链接:复制部分字符串
描述
键盘输入一个长度为len(1 <= len < 30)的字符串,再输入一个正整数 m(1 <= m <= len),将此字符串中从第 m 个字符开始的剩余全部字符复制成为另一个字符串,并将这个新字符串输出。要求用指针处理字符串。
输入描述:
键盘输入一个长度为len(1 <= len < 30)的字符串,再输入一个正整数 m(1 <= m <= len)
输出描述:
输出复制的新字符串
示例1
输入:helloworld
6
输出:world
解题分析:
这道题并不需要把它拷贝到原字符数组中,你可以直接从数组m-1下标位置开始输出,也可以用临时数组保存后再输出,或者直接拷贝到原数组后再输出。
思路1:从数组m-1下标位置的指针,开始输出。
注意:使用scanf函数接收数据,读取完后,会自动在字符串结尾添加一个'\0'.
思路2:使用函数 strtok 字符串截取。
思路3:使用函数 memmove 拷贝字符串。
注意:不能使用memcpy函数,对于重叠拷贝是做不到的。但是可以使用strncpy/memcpy拷贝到临时数组中,再输出。
代码实现:
方法1
1、拷贝到原数组中
#include <stdio.h>
int main()
{
char str[30] = {
0 };
int m = 0;
scanf("%s", str);
scanf("%d", &m);
char* p = str + (m - 1);
int i = 0;
while (*p != '\0')