| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 594 人关注过本帖
标题:指针问题,为什么会出问题?
只看楼主 加入收藏
loning
Rank: 2
等 级:论坛游民
帖 子:9
专家分:10
注 册:2010-11-26
结帖率:100%
收藏
已结贴  问题点数:30 回复次数:9 
指针问题,为什么会出问题?
#include<stdio.h>
#define N 2
#define M 2
void fun(char a[][2],int n,char*point)
{
    int i,m=0;
    for(i=0;i<n;i++)
     for(*point=a[i][m],m=0;m<2;m++,point++);
}
void main()
{
    int i,t;
    char a[N][M]={'a','a','a','a'};
        char s[N*M];
    printf("input string:");
    for(i=0;i<N;i++)
        for(t=0;t<M;t++)
            scanf("%c",&a[i][t]);
        fun(a,2,&s[0]);
        puts(s);
}
搜索更多相关主题的帖子: 指针 
2010-12-09 10:22
xgy5201314
Rank: 1
等 级:新手上路
帖 子:4
专家分:4
注 册:2010-10-21
收藏
得分:4 
这个程序没有问题,在我的电脑里可以运行.我用的是VC6.0软件,建议你换台电脑试试.我想可以.
2010-12-09 10:35
loning
Rank: 2
等 级:论坛游民
帖 子:9
专家分:10
注 册:2010-11-26
收藏
得分:0 
我的也是VC6.0,虽然有结果但出现一大堆的烫,???????
2010-12-09 10:48
loning
Rank: 2
等 级:论坛游民
帖 子:9
专家分:10
注 册:2010-11-26
收藏
得分:0 
1111
2010-12-09 11:36
xzy199999
Rank: 4
等 级:业余侠客
帖 子:326
专家分:286
注 册:2010-11-19
收藏
得分:4 
这程序是干吗用的?

我是初学者
2010-12-09 14:53
xiaomarn
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:348
专家分:2026
注 册:2009-3-18
收藏
得分:4 
程序代码:
#include<stdio.h>

#define N 2
#define M 2

void fun(char a[][2],int n,char*point)
{
      int i,m=0;

      for(i=0;i<n;i++)
            for(m=0,*point=a[i][m];m<2;m++,point++,*point=a[i][m])
                  ;
}

void main()
{
      int i,t;
      char a[N][M]={'a','a','a','a'};
      char s[N*M];

      printf("input string:");
      for(i=0;i<N;i++)
            for(t=0;t<M;t++)
                  scanf("%c",&a[i][t]);
      fun(a,2,&s[0]);
      s[4]='\0';
      puts(s);
      getch();
}

2010-12-09 16:21
遮天云
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:农村一小伙
等 级:贵宾
威 望:12
帖 子:1132
专家分:2671
注 册:2010-6-1
收藏
得分:4 
出现烫烫……的原因首先要看看是不是字符串长度有问题,还有就是没加字符串结束符
2010-12-09 16:23
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
收藏
得分:4 
你的指针有声明吗

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2010-12-09 16:24
mengcong3959
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:41
专家分:113
注 册:2010-12-6
收藏
得分:4 
确实是没有字符结束标志啊,,由于只进行了定义s,,等到后来进行赋完值后,,是不包括字符结束标志的。
2010-12-10 17:11
落拓
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:58
专家分:173
注 册:2010-9-29
收藏
得分:4 
楼主fun函数的第二个循环那里,for(*point=a[i][m],m=0;m<2;m++,point++); 应该改成for(m=0; m<2;m++, point++) *point=a[i][m]; 然后再加上'\0'就行了。
修改后的代码如下:
#include<stdio.h>
#define N 2
#define M 2
void fun(char a[][2],int n,char*point)
{
    int i,m=0;
    for(i=0;i<n;i++)
     for(m=0; m<2;m++, point++)
     {
         *point=a[i][m];
     }

}

void main()
{
    int i,t;
    char a[N][M]={'a','a','a','a'};//这句可以省去
        char s[N*M+1];//最后一个存放结束符

    printf("input string:");

    for(i=0;i<N;i++)
        for(t=0;t<M;t++)
            scanf("%c",&a[i][t]);

        fun(a,2,s);//直接用s,无需&s[0]
        s[N*M]='\0';
        puts(s);
}

2010-12-11 16:19
快速回复:指针问题,为什么会出问题?
数据加载中...
 
   



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

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