| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 214 人关注过本帖
标题:指针写函数
只看楼主 加入收藏
yudeyinji198
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:139
专家分:133
注 册:2012-8-30
结帖率:96%
收藏
已结贴  问题点数:10 回复次数:4 
指针写函数
一个包含n个字符的字符串,写一个函数,把一个字符串
*的第m个字符开始复制另外一个字符串。

写了个函数,为什么输出时乱码的?
程序代码:
/****************************************************
*指针,一个包含n个字符的字符串,写一个函数,把一个字符串
*的第m个字符开始复制另外一个字符串。
****************************************************/

#include"stdio.h"
#include"stdlib.h"
#include"string.h"

char* strmcopy(char *str, int m)
{
    int len;
    char *temp,*str1;
    str1=(char *)malloc(20);
    len=strlen(str);
    temp=str+len-m;    //指向第m个地址
    while(*temp!='\0')
    {
        *str1++=*temp;    //复制
        temp++;
    }
    return str1;

}
int main()
{
    char *str,*str1;
    int n,m;
    str=(char *)malloc(20);
    n=10;
    printf("输入包含n=%d个字符的字符串str\n",n);
    scanf("%s",str);
    printf("输入开始复制的个数m (m<n)\n");
    scanf("%d",&m);
    str1=strmcopy(str,m);
    printf("%s\n",str1);
    system("pause");
    return 0;
}

搜索更多相关主题的帖子: color 字符串 
2012-12-17 13:30
jk_love
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:196
专家分:965
注 册:2012-10-22
收藏
得分:0 
你拷贝完的时候指针已经移到最后了,你要的功能如下就可以了:
当然如果要学strcpy那种实现,去看看函数源码,有你想要的~ ~
char* strmcopy(char *str, int m)
{
    int len;
    char *temp,*str1;
    len=strlen(str);
    return temp=str+len-m;    //指向第m个地址
}
2012-12-17 14:05
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:4 
不太同意楼上的代码,既然是复制,应该是复制到新空间才对。
程序代码:
/****************************************************
*指针,一个包含n个字符的字符串,写一个函数,把一个字符串
*的第m个字符开始复制另外一个字符串。
****************************************************/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char *strmcopy(char *to, char *get, int m)
{
    int n = strlen(get);
    if (m > n)    return to = NULL;
    strcpy(to, &get[m - 1]);
    return to;
}
int main()
{
    char *str, str1[20];
    str = "asdfghjkl";
    puts(str);
    strmcopy(str1, str, 3);
    puts(str);
    puts(str1);
    return 0;
}




[fly]存在即是合理[/fly]
2012-12-17 14:42
jk_love
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:1
帖 子:196
专家分:965
注 册:2012-10-22
收藏
得分:6 
我是说了 达到那个功能,好吧,下面的代码和楼主的对比一下就知道楼主为什么打印出来的是乱码了
char* strmcopy(char *str, int m)
{
    int len;
    char *temp,*str1,*cp;
    cp=str;
    len=strlen(str);
    temp=str+len-m;    //指向第m个地址
    while((*cp++ = *temp++)!='\0');
    return cp;   
}
2012-12-17 15:14
yudeyinji198
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:139
专家分:133
注 册:2012-8-30
收藏
得分:0 
懂了,谢谢两位!
2012-12-17 21:53
快速回复:指针写函数
数据加载中...
 
   



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

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