C . ⑧【指针初试】使用函数实现字符串部分复制


本题要求编写函数,将输入字符串t中从第m个字符开始的全部字符复制到字符串s中。

函数接口定义

void strmcpy( char *t, int m, char *s );

函数strmcpy将输入字符串char *t中从第m个字符开始的全部字符复制到字符串char *s中。若m超过输入字符串的长度,则结果字符串应为空串。

裁判测试程序样例:

#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;
}

/* 你的代码将被嵌在这里 */

输入样例:

7
happy new year

输出样例:

new year

 

法一:(常规操作,计算出长度,一个一个赋值)

1 void strmcpy(char *t, int m, char *s) {
2  int len = strlen(t);
3  int j = 0;
4  for (int i = m-1; i < len; ++i) {
5         s[j]=t[i];
6         j++;
7  }
8 }

 

 

法二:(使用拷贝函数,string函数里的)

#include <string.h>
void strmcpy( char *t, int m, char *s )
{   
    char *a;
    a=t+m-1;   //关于-1的问题,写个小表格就知道了
    strcpy(s,a);
}
第一个字符
第二个字符
第三个字符
 t
 t+1
    t+2

嗯,有点远。就是第三个字符假设为m,(按题目要求,从m开始拷贝)那m其实是t+2,但是我要是写的话就要写t+3,所以要达到目的就要t+3-1得t+2.

 

 

 

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM