| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 364 人关注过本帖
标题:我对指针理解的不好。不知这道题错在哪里,恳切求教。
只看楼主 加入收藏
firmthinking
Rank: 3Rank: 3
来 自:西南交通大学
等 级:论坛游侠
帖 子:43
专家分:115
注 册:2012-12-9
结帖率:80%
收藏
已结贴  问题点数:20 回复次数:6 
我对指针理解的不好。不知这道题错在哪里,恳切求教。
题目是编写一个函数fun,函数功能是将M行N列的二维数组中的字符数据按列的顺序依次放到一个字符串中,并输出到屏幕。用puts()函数。
例如,二维数组中的数据是:
W W W W
S S S S
H H H H
则字符串的内容为WSHWSHWSHWSH
以下是有错误的程序。
#include <stdio.h>
int m,n;
int main()
{
    char fun(char *s[],char *b);
    int i,j;
    char w[10][10];
    char *a=NULL;
    printf("enter m,n:");
    scanf("%d %d",&m,&n);
    printf("The matrix:\n");
    for(i=0;i<m;i++)
    for(j=0;j<n;j++)
    scanf("%c",&w[i][j]);
    for(i=0; i<m; i++)
    {
       for(j=0;j<n; j++)
           printf("%3c",w[i][j]);
       printf("\n");
    }
    fun(w,a);
    printf("The A string:\n");
    puts(a);
    printf("\n\n");
    return 0;
}
char fun( char *s[], char *b)
{
   int i,j,k=0;
   for(j=0;j<n;j++)
      for(i=0;i<m;i++)
      {
         b[k]=*(*(s+i)+j);
         k++;
      }
      b[k]= '\0';
}

[ 本帖最后由 firmthinking 于 2012-12-17 23:44 编辑 ]
搜索更多相关主题的帖子: include 字符串 
2012-12-17 23:37
小小战士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:569
专家分:1313
注 册:2012-11-3
收藏
得分:20 
这不对吧?三行四列怎么会是WSHWSHWSH?

小小战士,战士中的战斗机!
2012-12-17 23:41
firmthinking
Rank: 3Rank: 3
来 自:西南交通大学
等 级:论坛游侠
帖 子:43
专家分:115
注 册:2012-12-9
收藏
得分:0 
哦,不好意思,应该是书上印错了。我改一下哈/
2012-12-17 23:44
小小战士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:569
专家分:1313
注 册:2012-11-3
收藏
得分:0 
#include <stdio.h>

int m,n;
void fun(char s[10][10],char *b);
int main()
{

    int i,j;
    char w[10][10];
    char a[10*10];

    printf("enter m n:");
    scanf("%d %d",&m,&n);
    printf("The matrix:\n");
    for(i=0;i<m;i++)
        scanf("%s",w[i]);
    fun(w,a);
    printf("The A string:\n");
    puts(a);
    printf("\n");
    return 0;
}
void fun(char s[10][10], char *b)
{
   int i,j;
   for(j=0;j<n;j++)
      for(i=0;i<m;i++)
         *b++=*(*(s+i)+j);
   *b='\0';
}
图片附件: 游客没有浏览图片的权限,请 登录注册


[ 本帖最后由 小小战士 于 2012-12-18 00:11 编辑 ]

小小战士,战士中的战斗机!
2012-12-18 00:09
firmthinking
Rank: 3Rank: 3
来 自:西南交通大学
等 级:论坛游侠
帖 子:43
专家分:115
注 册:2012-12-9
收藏
得分:0 
回复 4楼 小小战士
非常感谢你。还想请问一下,这一步要怎么分解,有些可能不懂。 *b++=*(*(s+i)+j);
数组的【】内一定不能缺省是吗?
2012-12-18 00:16
小小战士
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:1
帖 子:569
专家分:1313
注 册:2012-11-3
收藏
得分:0 
以下是引用firmthinking在2012-12-18 00:16:21的发言:

非常感谢你。还想请问一下,这一步要怎么分解,有些可能不懂。 *b++=*(*(s+i)+j);
数组的【】内一定不能缺省是吗?

*b++=*(*(s+i)+j);
就是
*b=*(*(s+i)+j);
b++;

传二维数组,至少要声明一维,行可省略,但列不能省略

小小战士,战士中的战斗机!
2012-12-18 00:21
firmthinking
Rank: 3Rank: 3
来 自:西南交通大学
等 级:论坛游侠
帖 子:43
专家分:115
注 册:2012-12-9
收藏
得分:0 
回复 6楼 小小战士
明白了,谢谢你。
2012-12-18 00:33
快速回复:我对指针理解的不好。不知这道题错在哪里,恳切求教。
数据加载中...
 
   



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

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