| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 621 人关注过本帖
标题:要求用指针从 n 个字符的字符串的第 m 个字符处开始拷贝成另一串字符,下面 ...
只看楼主 加入收藏
真想学C
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2014-4-25
结帖率:40%
收藏
已结贴  问题点数:10 回复次数:7 
要求用指针从 n 个字符的字符串的第 m 个字符处开始拷贝成另一串字符,下面是我写的代码,求教怎么改.........
#include <stdio.h>
#include <string.h>
int main()
{
    int m,n,i=0;
    char *p1,*p2,str1[100],str2[100];
    p1=str1;
    p2=str2;
    gets(str1);
    gets(str2);
    for (n=0;*p1!='\0';n++)
    {
        p1++;                                    //统计第一个字符串的字符个数,以便输入合适大小的m值。
    }
    printf("输入小于%d的数字:\n",n);
    scanf("%d\n",&m);
    while (i<m)
    {
        i++;
        p1++;                          //将p1推进到规定的第m个字符
    }
    while (*p2!=0)                        //将str2拷贝在str1的第m 个字符后
    {
        *p1=*p2;
        p1++;
        p2++;
    }
    *p1=0;
    printf("%s\n",p1);                  输出 p1
}
搜索更多相关主题的帖子: include 字符串 统计 
2014-06-15 13:41
砖家的谎言
Rank: 12Rank: 12Rank: 12
等 级:禁止访问
威 望:30
帖 子:693
专家分:3898
注 册:2013-12-6
收藏
得分:4 
while (i<m)
    {
        i++;
        p1++;                          //将p1推进到规定的第m个字符
    }
在这个前面再次将指针p1=str1;因为你前面计算n的值得时候已经将p1推进到最后一位了。

我不是砖家,要努力成为砖家。
2014-06-15 14:21
rmbking
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:36
专家分:157
注 册:2014-3-19
收藏
得分:6 
#include <stdio.h>
#include <string.h>
int main()
{
    int m,n,i=0;
    char *p1,*p2,str1[100],str2[100];
    p1=str1;
    p2=str2;
    gets(str1);
    gets(str2);
    for (n=0;*p1!='\0';n++)
    {
        p1++;                                 
    }
    printf("输入小于%d的数字:\n",n);
    scanf("%d",&m);                                //1、scanf不要加\n,否则必须匹配输入回车
    p1=str1;                                      //2、重置p1,计算n时p1后移,不再指向str1
    while (i<m)
    {
        i++;
        p1++;                          
    }
    while (*p2!=0)                        
    {
       *p1=*p2;
        p1++;
        p2++;
    }
    *p1=0;
    printf("%s\n",str1);                 //重置p1,或输出str1
    return 0;
}
2014-06-15 15:17
真想学C
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2014-4-25
收藏
得分:0 
回复 3 楼 rmbking
非常感谢你。
2014-06-15 18:56
真想学C
Rank: 1
等 级:新手上路
帖 子:31
专家分:0
注 册:2014-4-25
收藏
得分:0 
回复 2 楼 砖家的谎言
谢谢你,
2014-06-15 18:56
longxingxiu
Rank: 2
等 级:论坛游民
帖 子:73
专家分:64
注 册:2014-4-23
收藏
得分:0 
#include <stdio.h>
#include <string.h>
int main()
{
    int m;int n=0;int i=0;
    char *p1,*p2,str1[10],str2[100];
    p1=str1;
    p2=str2;
    printf("输入原字符串:");
    gets(str2);
    getchar;
    for (n=0;*p2!='\0';n++)
    {
        p2++;                                    //统计第一个字符串的字符个数,以便输入合适大小的m值。
    }
    printf("输入小于%d的数字:\n",n);
    scanf("%d",&m);
    if (m<n)
    {
        p2=str2+m-1;                          //将p1推进到规定的第m个字符
    }
    while (*p2!='\0')                        //将str2拷贝在str1的第m 个字符后
    {
        *p1=*p2;
        p1++;
        p2++;
    }
     *p1='\0';                            //将在最后填充\0,表示字符串结束
     printf("%s\n",str1);                 // 输出 p1
     return 0;
}

[ 本帖最后由 longxingxiu 于 2014-6-16 17:59 编辑 ]
2014-06-16 17:52
longxingxiu
Rank: 2
等 级:论坛游民
帖 子:73
专家分:64
注 册:2014-4-23
收藏
得分:0 
回复 3 楼 rmbking
还是想问下这里getchar(str1)干嘛的不用吧。还有最后面的*p=0和*p=‘\0’作用是一样的嘛?理解不了唉,*p=0是将最后面的下一位赋值为零唉
2014-06-16 18:02
rmbking
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:36
专家分:157
注 册:2014-3-19
收藏
得分:0 
字符‘\0’与数值0是一样的,前面一句不晓得你说的是什么。。。
2014-06-16 19:13
快速回复:要求用指针从 n 个字符的字符串的第 m 个字符处开始拷贝成另一串字符, ...
数据加载中...
 
   



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

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