| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2320 人关注过本帖
标题:自定义strncpy函数
只看楼主 加入收藏
_Strike
Rank: 2
等 级:论坛游民
帖 子:133
专家分:72
注 册:2016-3-22
结帖率:90.63%
收藏
已结贴  问题点数:10 回复次数:14 
自定义strncpy函数
#include<stdio.h>
#include<string.h>
void strmcpy(char *p1,char *p2,int m)
{
    while(*p2 != 0)
    {
        *(p1+m-1) = *p2;
        p1++;
        p2++;
        puts(p1);
    }
    fputs(p1,stdout);
}

int main()
{
    char s[80];
    char t[32];
    int m;

    gets(s);
    gets(t);
    scanf(" %d",&m);
    strmcpy(s,t,m);
    return 0;

}
将字符串t从第m个位置开始的全部字符复制到字符串s,再输出字符串s
搜索更多相关主题的帖子: include return 字符串 
2016-05-26 23:00
_Strike
Rank: 2
等 级:论坛游民
帖 子:133
专家分:72
注 册:2016-3-22
收藏
得分:0 
不知道哪里错了
2016-05-26 23:02
_Strike
Rank: 2
等 级:论坛游民
帖 子:133
专家分:72
注 册:2016-3-22
收藏
得分:0 
void strmcpy(char *p1,char *p2,int m)
{
    while(*p2 != 0)
    {
        *(p1+m-1) = *p2;
        p1++;
        p2++;
        puts(p1);//这句多余的,我刚刚检验用的
    }
    fputs(p1,stdout);
}
2016-05-26 23:18
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10552
专家分:42996
注 册:2014-5-20
收藏
得分:0 
strncpy好象不是这个strmcpy的意思?
2016-05-27 08:23
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10552
专家分:42996
注 册:2014-5-20
收藏
得分:0 
是从p2复制m个字节到p1吧?
2016-05-27 08:24
wanglianyi1
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:14
帖 子:647
专家分:2067
注 册:2015-6-18
收藏
得分:0 
要限制一下m的值小于等于字符串s的长度吧

[此贴子已经被作者于2016-5-27 08:47编辑过]

2016-05-27 08:42
yuantkong
Rank: 2
等 级:论坛游民
威 望:3
帖 子:82
专家分:86
注 册:2016-5-17
收藏
得分:0 
void strmcpy(char *p1,char *p2,int m)
{
    while(*p2 != 0) // 字符判断的话, 应该是 *p2!='\0' 不等于字符结束符号'\0'
    {
        *(p1+m-1) = *p2;
        p1++;
        p2++;
        puts(p1);
    }
    fputs(p1,stdout);
}
2016-05-27 15:40
_Strike
Rank: 2
等 级:论坛游民
帖 子:133
专家分:72
注 册:2016-3-22
收藏
得分:0 
回复 5楼 吹水佬
是的,没错。。。
2016-05-27 16:17
_Strike
Rank: 2
等 级:论坛游民
帖 子:133
专家分:72
注 册:2016-3-22
收藏
得分:0 
回复 5楼 吹水佬
#include<stdio.h>
#include<string.h>
void strmcpy(char s[],char t[],int m)
{
    int i=0;
    while(t[i] != 0)
    {
        s[i+m-1]=t[i];
        i++;

    }
   s[m-1+strlen(t)]='\0';
    puts(s);

}

int main()
{
    char s[80];
    char t[32];
    int m;

    gets(s);
    gets(t);
    scanf(" %d",&m);
    strmcpy(s,t,m);
    return 0;

}
用数组操作可以,可是我指针不会,怎么转成指针?
2016-05-27 16:38
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10552
专家分:42996
注 册:2014-5-20
收藏
得分:10 
回复 9楼 _Strike
程序代码:
#include<stdio.h>

char* strmcpy(char *lpszDest, const char *lpszSrc, const int dwSize)
{
    char *lpRet = lpszDest;
    int i = 0;
    while ((i++ < dwSize) && ((*lpszDest++ = *lpszSrc++) != '\0')) NULL;
    *lpszDest = '\0';
    return lpRet;
}

int main()
{
    char s[80];
    char t[32];
    int m;
    gets(s);
    gets(t);
    scanf("%d",&m);
    printf("%s\n", strmcpy(s, t, m));
    return 0;
}
2016-05-27 22:08
快速回复:自定义strncpy函数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016759 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved