6-17関数による文字列部分コピー(20点)

802 ワード

6-17関数を用いて文字列部分複製(ポインタ書き方)を実現する本題では、関数の記述を要求し、入力文字列tのm番目の文字から始まるすべての文字を文字列sに複製する.
関数インタフェース定義:void strmcpy(char*t,int m,char*s);審判試験プログラムのサンプル:
#include 
#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
", &m); ReadString(t); strmcpy( t, m, s ); printf("%s
", s); return 0; } /* */

サンプルを入力:
7 happy new year出力サンプル:*
new year
void strmcpy( char *t, int m, char *s ){
    if(t+m-1 == NULL)
        s = NULL;
    else{
        for(t = t+m-1;*t != '\0';t++,s++){
            *s = *t;
        }
    } 
}

分かち合いの技があれば、光栄に存じます.