| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 462 人关注过本帖
标题:麻烦各位大哥帮助解释下
取消只看楼主 加入收藏
platolgq
Rank: 2
来 自:江西
等 级:论坛游民
帖 子:74
专家分:87
注 册:2011-2-24
结帖率:80%
收藏
已结贴  问题点数:20 回复次数:3 
麻烦各位大哥帮助解释下
# include <stdio.h>
# include <string.h>

int main(void)
{
    void copystr(char *, char *, int);
    int m;
    char str1[20], str2[20];

    printf("\ninput string:");
    gets(str1);
    printf("which character that begin to copy?:");
    scanf("%d", &m);
   
    if (strlen(str1)<m)
        printf("input error!");
    else
    {
        copystr(str1, str2, m);
        printf("result:%s\n", str2);
    }
    return 0;
}

void copystr(char * p1, char * p2, int m)
{
    int n;   //设置n的作用是什么?
    n = 0;
    while(n<m-1)  //这个循环的作用是什么?为什么不是 n<m?
    {
        n++;
        p1++;
    }
    while(*p1!='\0')
    {
        *p2 = *p1;
        p1++;
        p2++;
    }
    *p2 = '\0';
}
搜索更多相关主题的帖子: void 大哥 void character 大哥 include character include return return 
2011-08-31 21:35
platolgq
Rank: 2
来 自:江西
等 级:论坛游民
帖 子:74
专家分:87
注 册:2011-2-24
收藏
得分:0 
我知道循环是为了移动指针p1的。当 n=0, p1指向的是数组的第一个字符。
列:str1="reading_room"  如果我设m=9的话。也就是从第九个字符(r)开始复制;
     m-1=8; n<((m-1)=8); 也就是n最大为7,即n=7; 而当n=0  *(p1)='r'; n=1  *(p1)='e';....n=7时,*(p1)='_';
     所以要是*(p1)=第二个'r',那么n=8.即 n<m;

但为什么不是了?

C种的自学者
2011-08-31 22:27
platolgq
Rank: 2
来 自:江西
等 级:论坛游民
帖 子:74
专家分:87
注 册:2011-2-24
收藏
得分:0 
麻烦各位大哥能不能说的明白点。 函数中设置变量n的目的是什么?第一个循环是怎么执行的?

C种的自学者
2011-08-31 22:47
platolgq
Rank: 2
来 自:江西
等 级:论坛游民
帖 子:74
专家分:87
注 册:2011-2-24
收藏
得分:0 
刚刚关了电脑,将题重新看了一遍,才发现自增运算符没有算进去。多谢各位大哥的提醒,问题解决了

C种的自学者
2011-08-31 23:19
快速回复:麻烦各位大哥帮助解释下
数据加载中...
 
   



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

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