字符串的复制:

#include <stdio.h>
#include "test.h"

int main() {
    char name1[] = "**********************";
    char name2[] = "hello";
    my_strcpy(name1, name2);

    printf("%s\n", name1);
    return 0;
}

void my_strcpy(char *name1, char *name2) {

//    while (*name2 != '\0') {
//        *name1 = *name2;
//        name2++;
//        name1++;
//    }
//    *name1 = *name2;


    *name1 = *name2;
    if (*name2 != '\0') {
        my_strcpy(name1 + 1, name2 + 1);
    }


/*
while (*name1++ = *name2++) {
    ;
}*/
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 题意:定义一个函数 void strmcpy(char *s, char *t, int m) 实现字符串复制:输入一个字符串 t 和一个正整数 m,将字符串 t 中从第 m 个字符开始的全部字符复制字符串 s 中,然后输出字符串 s。要求自定义并调用函数,试编写相应程序。 解题思路:定义一个指针 p,让其指向字符串 t 中第 m 个字符,然后使用 while 循环将 t 中从第 m 个字符开始的剩余部分依次复制到 s 中。最后在 s 的字符串末尾添加一个结束符 '\0'。 具体实现可以参考下面的代码: ```c #include <stdio.h> void strmcpy(char *s, char *t, int m); int main() { char s[100], t[100]; int m; printf("请输入一个字符串 t 和一个正整数 m:\n"); scanf("%s %d", t, &m); strmcpy(s, t, m); printf("复制结果为:%s\n", s); return 0; } void strmcpy(char *s, char *t, int m) { char *p = t + m; while (*p != '\0') { *s++ = *p++; } *s = '\0'; } ``` ### 回答2: 本题要求编写一个函数,实现字符串复制的功能。具体要求是,输入一个字符串 t 和一个正整数 m,将字符串 t 中从第 m 个字符开始的全部字符复制字符串 s 中,再输出字符串 s。要求自定义并调用函数 void strmcpy(char *s, char *t, int m)。 函数 strmcpy 的实现需要采用指针方式来访问字符串的每一个字符,并采用循环实现从第 m 个字符开始的全部字符的复制。具体步骤如下: 1.在函数 strmcpy 的定义中,声明两个指针变量 p1 和 p2,用于指向输入的字符串 t 和输出的字符串 s。 2.在循环体中,通过移动指针 p1 和 p2 的位置,将字符串 t 中从第 m 个字符开始的全部字符复制字符串 s 中,并计算复制的字符数。 3.在循环结束后,将字符串 s 的最后一个字符设置为 '\0',表示字符串的结束。 下面给出程序的代码实现: #include <stdio.h> #include <string.h> void strmcpy(char *s, char *t, int m) { char *p1, *p2; int i, n; p1 = t; /* 指向输入字符串的开始位置 */ p2 = s; /* 指向输出字符串的开始位置 */ n = strlen(t); /* 输入字符串的长度 */ if(m > n) /* m 超过了输入字符串的长度 */ return; for(i=m-1; i<n; i++) /* 从第 m 个字符开始复制 */ *p2++ = *p1++; *p2 = '\0'; /* 设置字符串 s 的结束符 */ } int main() { char s[100], t[100]; int m; printf("请输入要复制字符串 t:"); gets(t); printf("请输入要复制的起始位置 m:"); scanf("%d", &m); strmcpy(s, t, m); printf("复制后的字符串 s 为:%s\n", s); return 0; } 该程序先从用户输入中读取字符串 t 和起始位置 m,然后调用函数 strmcpy 复制字符串 t 中从第 m 个字符开始的全部字符到字符串 s 中,并输出字符串 s。由于使用了指针和循环,程序具有良好的可扩展性和可重用性,可应用于各种字符串操作中。 ### 回答3: 函数是C语言中一个非常重要的概念,可以将一些常用的代码打包起来,方便程序的编写和维护。本题要求我们实现一个字符串复制函数,即将字符串t中从第m个字符开始的全部字符复制字符串s中,并输出字符串s。 在编写程序之前,我们需要先了解字符串C语言中是如何表示的。在C语言中,字符串是以字符数组的形式存储的,数组的末尾需要用'\0'表示字符串的结束符。同时,C语言中也提供了一些常用的字符串函数,如strcpy()和strcat()等,可以快速实现字符串的拷贝和连接。本题要求我们自定义函数实现字符串复制,可以借鉴这些常用函数的实现思路。 下面是我用C语言编写的实现字符串复制的函数代码: ``` #include <stdio.h> #include <string.h> void strmcpy(char* s, char* t, int m) { int i; for (i = 0; i < strlen(t) - m + 1; i++) { s[i] = t[i + m - 1]; } s[i] = '\0'; } int main() { char t[100], s[100]; int m; printf("请输入字符串t:"); scanf("%s", t); printf("请输入正整数m:"); scanf("%d", &m); strmcpy(s, t, m); printf("复制后的字符串s为:%s", s); return 0; } ``` 在这个程序中,我们先定义了一个自定义函数strmcpy(),它有三个参数,分别是字符串s、字符串t和正整数m。在函数内部,我们用一个for循环遍历字符串t中从第m个字符开始的全部字符,并将这些字符逐一赋值给字符串s。最后,我们在字符串s的末尾加上结束符'\0',使其成为一个完整的字符串。 在主函数中,我们先定义了字符串t、字符串s和正整数m,分别用来存放输入的字符串复制后的字符串字符串的起始位置。接着,我们调用了自定义函数strmcpy(),并将字符串s、字符串t和正整数m作为参数传入。最后,我们输出复制后的字符串s。 综上所述,我们可以通过自定义函数实现字符串复制,在编写程序时需要注意字符串的定义和结束符的使用。对于初学者而言,通过编写自定义函数可以更好地理解函数的概念,并提高程序的可读性和维护性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值