CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

关于字符指针数组问题

楼主kuvske()2006-07-02 22:50:08 在 C/C++ / C语言 提问

#include   <stdio.h>  
  #include   <string.h>  
  int   geshu();  
  void   shuru(char   *[],   int);  
  void   paixu(char   *[],   int);  
  void   main()  
  {  
  char   *   no[10];  
  int     z;  
  z   =   geshu();  
  shuru(no,z);  
  paixu(no,z);  
  }  
  void   paixu(char   *   nn[10],int   i)  
  {  
  int   x,   y,   j;  
  char   *   temp;  
  for   (x   =   0;x   <   i;x++)  
  {  
  for   (y   =   0;y<i-x-1;y++)  
  {  
  j=strcmp(nn[y],nn[y+1]);//为什么改成(*nn[y],*nn[y+1])会错呢?  
  //nn是字符指针数组,放的是地址。strcmp(,);比的是字符串,因该是  
  //取地址的值才对撒。  
  if   (j   ==   1)  
  {  
  temp   =   nn[y];  
  nn[y]   =   nn[y+1];  
  nn[y+1]   =   temp;  
  }  
  }  
  }  
  }  
   
  void   shuru(char   *   z[10],   int   i)  
  {  
  int   x;  
  for   (x   =   0;   x   <   i;   x++)  
  {  
   
  fflush(stdin);  
  gets(z[x]);  
  fflush(stdin);  
   
  }  
  }  
  int   geshu()  
  {  
  int   x;  
  printf("请输入多少直");  
  scanf("%d",   &x);  
  return   x;  
  } 问题点数:20、回复次数:4Top

1 楼tailzhou(尾巴)回复于 2006-07-02 23:01:50 得分 20

char   *   no[10];  
   
  没给   no数组分配内存  
   
  在shuru函数内的gets(z[x]);语句前面  
  z[x]=malloc(100);   //100改为你的输入的最大字符串的长度  
  Top

2 楼kuvske()回复于 2006-07-02 23:06:41 得分 0

#include   <stdio.h>  
  #include   <string.h>  
  #include   <malloc.h>  
  int   geshu();  
  void   shuru(char   *[],   int);  
  void   paixu(char   *[],   int);  
  void   main()  
  {  
  char   *   no[10];  
  int     z;  
  z   =   geshu();  
  shuru(no,z);  
  paixu(no,z);  
  }  
  void   paixu(char   *   nn[10],int   i)  
  {  
  int   x,   y,   j;  
  char   *   temp;  
  for   (x   =   0;x   <   i;x++)  
  {  
  for   (y   =   0;y<i-x-1;y++)  
  {  
  j=strcmp(nn[y],nn[y+1]);//为什么改成(*nn[y],*nn[y+1])会错呢?  
  //nn是字符指针数组,放的是地址。strcmp(,);比的是字符串,因该是  
  //取地址的值才对撒。  
  if   (j   ==   1)  
  {  
  temp   =   nn[y];  
  nn[y]   =   nn[y+1];  
  nn[y+1]   =   temp;  
  }  
  }  
  }  
  }  
   
  void   shuru(char   *   z[10],   int   i)  
  {  
  int   x;  
  for   (x   =   0;   x   <   i;   x++)  
  {  
  z[x]   =   (char   *)malloc(15);  
   
  fflush(stdin);  
  gets(z[x]);  
  fflush(stdin);  
     
  }  
  }  
  int   geshu()  
  {  
  int   x;  
  printf("请输入多少直");  
  scanf("%d",   &x);  
  return   x;  
  }这不是问题关键Top

3 楼kuvske()回复于 2006-07-02 23:07:48 得分 0

j=strcmp(nn[y],nn[y+1]);//为什么改成(*nn[y],*nn[y+1])会错呢?  
  //nn是字符指针数组,放的是地址。strcmp(,);比的是字符串,因该是  
  //取地址的值才对撒。  
  Top

4 楼littlefish1981()回复于 2006-07-03 10:32:57 得分 0

lz对strcmp函数理解有误,查查msdn就知道了。  
   
  int   strcmp(const   char   *string1,const   char   *string2)  
  函数接收的参数就是char   *型的,代表字符串,而*(char   *)仅仅是一个字符。Top

相关问题

关键词

得分解答快速导航

  • 帖主:kuvske
  • tailzhou

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo