免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5051 | 回复: 4
打印 上一主题 下一主题

字符串数组倒置的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-03-25 18:42 |只看该作者 |倒序浏览
帮忙看看这个答案有哪些defect 以及如何改进
#include <stdio.h>

char * stringArray[] =
{"i",
"Am",
"a",
"Boy",
"the",
"end"
};
void reverseString(char * str[],size_t size)
{
        int  i = 0;
        char * ptrtemp ;
        for(;i<size/2;i++)
        {
                ptrtemp = str;
                str = str[size-i-1];
                str[size-i-1] = ptrtemp;       
       
        }
       
               
       
}
int main()
{

       
        size_t size = sizeof(stringArray)/sizeof(stringArray[0]);
       

        printf("the string Array before reverse\n");
        int i = 0;
        for(i = 0; i < size; i++)
        {
                printf("%s\n",stringArray);
        }               
        reverseString(stringArray,size);


        printf("the string Array after reverse\n");

        for(i = 0; i < size; i++)
        {
                printf("%s\n",stringArray);
        }               

        printf("\n");
        exit(0);
}

论坛徽章:
0
2 [报告]
发表于 2008-03-25 22:19 |只看该作者
大概看了一下:有几个地方
1:size_t size = sizeof(stringArray)/sizeof(stringArray[0]);
     其中stringArray是指针,所以sizeof(stringArray) == 4,所以之后的值都不对。
2:reverseString中的指针交换处用的也不对。

论坛徽章:
0
3 [报告]
发表于 2008-03-26 09:37 |只看该作者
但是我是gdb 调试的时候 sizeof(stringArray) 是24阿

论坛徽章:
0
4 [报告]
发表于 2008-03-26 10:01 |只看该作者
原帖由 77h2_eleven 于 2008-3-25 22:19 发表
     其中stringArray是指针,所以sizeof(stringArray) == 4,所以之后的值都不对。


stringArray是指针数组 sizeof(stringArray) == 24

搂住最终要得到什么结果?

论坛徽章:
0
5 [报告]
发表于 2008-03-26 10:11 |只看该作者
看这个是你想要的不

  1. void reverseString(char * str[], size_t size)
  2. {
  3.     int  i = 0;
  4.     int  j = size-1;
  5.     char * ptrtemp ;
  6.     for (; i < j; i++, j--) {
  7.         ptrtemp = str[i];
  8.         str[i]  = str[j];
  9.         str[j]  = ptrtemp;
  10.     }
  11. }
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP