字符串比较函数收获

错误程序:
#include
#include
#define M 2      //二维长度为2
#define N 2
int main ()
{

      char s[N][M];
      int i,j;
      for(i=0;i<N;i++)
      {
              printf("Please input:");
              scanf("%s",&s[i]);
      }
      for(i=0;i<N;i++)
              for(j=i;j<M;j++)
                      if(strcmp(s[i],s[j])>0)
                      {
                              char t[M];
                              strcpy(t,s[i]);
                              strcpy(s[i],s[j]);
                              strcpy(s[j],t);
                      }
      printf("The result:");
      for(i=0;i<N;i++)
              printf("%s  ",s[i]);
      return 0;
}
运行结果:
Please input:12                //输入的字符串长度为2
Please input:24
The result:1224  24

正确程序:
#include
#include
#define M 20        //二维长度为20
#define N 2
int main ()
{

      char s[N][M];
      int i,j;
      for(i=0;i<N;i++)
      {
              printf("Please input:");
              scanf("%s",&s[i]);
      }
      for(i=0;i<N;i++)
              for(j=i;j<M;j++)
                      if(strcmp(s[i],s[j])>0)
                      {
                              char t[M];
                              strcpy(t,s[i]);
                              strcpy(s[i],s[j]);
                              strcpy(s[j],t);
                      }
      printf("The result:");
      for(i=0;i<N;i++)
              printf("%s  ",s[i]);
      return 0;
}

运行结果:
Please input:24        //输入的字符串长度为2
Please input:12
The result:12  24 

结论:字符串存储时,若写入的长度小于已经定义的长度,会自动添加‘/0’,若写入的字符串长度大于或等于已经定义的长度,则不会加‘/0’。输出时,字符串遇到‘/0’时认为这是一段字符串,停止输出,否则则一直输出到结束。所以若要进行二维字符串数组中字符串的操作,定义时,需将第二维的长度定义稍大些。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值