| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 356 人关注过本帖
标题:为什么没有结果?最近在学指针,我觉得好纠结,问题有些多,希望各位不要厌 ...
只看楼主 加入收藏
千树
Rank: 1
等 级:新手上路
帖 子:62
专家分:1
注 册:2013-11-4
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
为什么没有结果?最近在学指针,我觉得好纠结,问题有些多,希望各位不要厌烦
#include<stdio.h>
#include<string.h>
void copy(char *form,char *to,int m)
{int i,j;
 for(i=0,j=m-1;*(form+j)!='\0';j++)
     *(to+i)=*(form+j);
 *to='\0';}
int main()
{char *a="I am a student.";
 char b[20];
 int m;
 char *p=b;
 scanf("%d",&m);
 copy(a,p,m);
 printf("%s\n",b);
 return 0;}
搜索更多相关主题的帖子: include return 
2013-12-01 22:29
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:10 
你这copy函数看的我才叫一个纠结呢。

i的值在循环中一直没变,而且最后还来个*to='\0',也就是说你的to最后都是一个空串,当然没有输出了。

重剑无锋,大巧不工
2013-12-01 22:50
千树
Rank: 1
等 级:新手上路
帖 子:62
专家分:1
注 册:2013-11-4
收藏
得分:0 
回复 2楼 beyondyf
那个,后来改的时候不小心删了,但是为什么我加上去,还是没有输出呢?话说看到你的第一句话啊,哎。。。。。。。。

[ 本帖最后由 千树 于 2013-12-1 22:57 编辑 ]
2013-12-01 22:53
zhaogay
Rank: 7Rank: 7Rank: 7
来 自:宫
等 级:黑侠
帖 子:151
专家分:586
注 册:2013-10-10
收藏
得分:10 
#include<stdio.h>
 #include<string.h>
 void copy(char *form,char *to,int m)
 {int i,j;
 for(i=0,j=m;*(form+j)!='\0';j++,i++)
      *(to+i)=*(form+j);
 *(to+i)='\0';
}
 int main()
 {char *a="I am a student.";
 char b[20];
 int m;
 char *p=b;
 scanf("%d",&m);
 copy(a,p,m);
 printf("%s\n",b);
 return 0;}
个人理解的改了下

好好学习,天天想上
2013-12-01 22:55
千树
Rank: 1
等 级:新手上路
帖 子:62
专家分:1
注 册:2013-11-4
收藏
得分:0 
回复 2楼 beyondyf
好吧,我知道我错哪了,谢谢了
2013-12-01 23:02
千树
Rank: 1
等 级:新手上路
帖 子:62
专家分:1
注 册:2013-11-4
收藏
得分:0 
回复 4楼 zhaogay
恩恩,谢谢
2013-12-01 23:02
好男儿!
Rank: 2
来 自:陕西省
等 级:论坛游民
帖 子:29
专家分:52
注 册:2013-7-26
收藏
得分:0 
建议你看一下这四段视频,我师父讲的,讲有关指针的,保证你看了不后悔。
http://v.
http://v.
http://v.
http://v.
2013-12-01 23:22
wht750109
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:49
专家分:151
注 册:2013-10-21
收藏
得分:0 
/*编程注意对齐风格,好看好维护*/
#include<stdio.h>
#include<string.h>
void copy(char *form,char *to,int m)
{
    int i,j;
    for(i=0,j=m-1;*(form+j)!='\0';j++,i++)  /*这里加一个i++,不然一直i==0*/
     *(to+i)=*(form+j);      
     *(to+i)='\0';        /*这里加一个+i,不然一直相当于(to+0)='\0',注意:错在这里,因为你没用复合语句将你的两个语句扩进去,它已经跳出for循环了*/
}

int main()
{
    char *a="I am a student.";
    char b[20];
    int m;
    char *p=b;
    printf("\nm( 0<m<20 )==");
    scanf("%d",&m);
    copy(a,p,m);
    printf("\n*a==%s",a);    /*加一行输出对比*/
    printf("\nb[]==%s",b);   /*加一行输出对比*/
    getch();                 /*停留一下*/
    return 0;
}
2013-12-01 23:25
快速回复:为什么没有结果?最近在学指针,我觉得好纠结,问题有些多,希望各位不 ...
数据加载中...
 
   



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

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