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