| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 443 人关注过本帖
标题:动态二维数组分配有问题啊 为什么行和列相同才能给数组赋值
只看楼主 加入收藏
yuanhaitaozz
Rank: 1
来 自:江苏
等 级:新手上路
帖 子:32
专家分:9
注 册:2013-8-22
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
动态二维数组分配有问题啊 为什么行和列相同才能给数组赋值
#include <stdio.h>
#include <stdlib.h>
void fun(char **p1,char *p2,int p,int q);
int main()
{
    int m,n,g,d,f;
    char **x;
    char *y;
    puts("输入行和列");
    scanf("%d %d",&m,&n);
    while(getchar()!='\n')
        continue;
    d=m*n;
    printf("%d  %d",m,n);
    x=(char **)malloc(m* sizeof(char *));      
    for(g=0;g<m;g++)
        x[g]=(char *)malloc(n*sizeof(char)+1);               
    puts("输入二维数组各项");
    for(g=0;g<m;g++)
    {
        gets(x[g]);
        
    }
    y=(char *)malloc(sizeof(char)*m*n+1);      
    fun(x,y,m,n);
    for(g=0;g<m;g++)           //输出检验
    {
        for(f=0;f<n;f++)
            putchar(x[g][f]);
        putchar('\n');
    }
    putchar('\n');

    puts(y);
    putchar('\n');
    free(x);
    free(y);
    return 0;

}
void fun(char **p1,char *p2,int p,int q)
{
    int i,j,l=0;
   
    for(i=0;i<p;i++)
    {
        for(j=0;j<q;j++)
        {
            
            p2[l]=p1[j][i];
            l++;
            
        }
    }
    p2[l]='\0';

}
RT  只有在m,n相同的时候才能执行到最后
搜索更多相关主题的帖子: continue include 动态 
2013-08-25 20:45
yuanhaitaozz
Rank: 1
来 自:江苏
等 级:新手上路
帖 子:32
专家分:9
注 册:2013-8-22
收藏
得分:0 
可以直接忽略d这个变量。。。忘删了
2013-08-25 20:46
lzj12530
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:2
帖 子:264
专家分:841
注 册:2013-3-28
收藏
得分:0 
你的意思是程序执行不了么

C++菜鸟
2013-08-25 20:55
yuanhaitaozz
Rank: 1
来 自:江苏
等 级:新手上路
帖 子:32
专家分:9
注 册:2013-8-22
收藏
得分:0 
回复 3楼 lzj12530
执行的了   但行和列只能输入相同的数的时候才能为该二维数组输入内容  否则就是跳出来强行关闭的窗口
2013-08-26 14:20
liufashuai
Rank: 9Rank: 9Rank: 9
来 自:冥界-魔域-魂殿
等 级:蜘蛛侠
威 望:1
帖 子:370
专家分:1374
注 册:2012-6-22
收藏
得分:20 
#include <stdio.h>
#include <stdlib.h>
void fun(char **p1,char *p2,int p,int q);


int main()
{
        int m,n,g,d,f;
        char **x;
        char *y;
   
        puts("输入行和列");
        scanf("%d %d",&m,&n);
        
        while(getchar()!='\n')
            continue;
        d=m*n;
        
        printf("%d  %d",m,n);
      
        x=(char **)malloc(m* sizeof(char *));
        for(g=0;g<m;g++)
            x[g]=(char *)malloc(n*sizeof(char)+1);               
        
        puts("输入二维数组各项");
        for(g=0;g<m;g++)
        {  
            gets(x[g]);
        }

        y=(char *)malloc(sizeof(char)*m*n+1);      
        
        fun(x,y,m,n);
   
        for(g=0;g<m;g++)           //输出检验
        {
            for(f=0;f<n;f++)
                putchar(x[g][f]);
            putchar('\n');
        }
        putchar('\n');

        puts(y);
        putchar('\n');
        free(x);
        free(y);
        return 0;

}
void fun(char **p1,char *p2,int p,int q)
{
    int i,j,l=0;
   
    for(i=0;i<p;i++)
    {
        for(j=0;j<q;j++)
        {
            
            p2[l]=p1[i][j];            //这个地方写错了!!!!!
            l++;
            
        }
    }
    p2[l]='\0';

}


改了,一般出现这种问题就是你把两个参数弄反了,注释的地方写反了
还有LZ,咱能把代码写规范点不,这样大家一看一目了然,太乱了大家都不想看,特别是程序长的时候

有一种落差是,你配不上自己的野心,也辜负了所受的苦难。






2013-08-26 14:52
yuanhaitaozz
Rank: 1
来 自:江苏
等 级:新手上路
帖 子:32
专家分:9
注 册:2013-8-22
收藏
得分:0 
回复 5楼 liufashuai
   非常感谢   只是我是新手  可以讲一下怎么才能让人看起来干净呢  虚心求教   举个差不多的例子就可以
2013-08-26 16:16
peach5460
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:武汉
等 级:贵宾
威 望:30
帖 子:2780
专家分:6060
注 册:2008-1-28
收藏
得分:0 
搜,谷歌的CPP编码规范...
大部分按照那些排版和编程既可让人看你的代码觉得赏心悦目

我总觉得授人以鱼不如授人以渔...
可是总有些SB叫嚣着:要么给代码给答案,要么滚蛋...
虽然我知道不要跟SB一般见识,但是我真的没修炼到宠辱不惊...
2013-08-26 16:20
快速回复:动态二维数组分配有问题啊 为什么行和列相同才能给数组赋值
数据加载中...
 
   



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

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