求两个字符串比较大小的方法?

sparadise1003 2009-10-22 10:20:55
char *date1_str ="22-10-2009"
char *date2_str ="23-11-2008"

有什么好的方法来比较这两个字符串的大小吗?
...全文
1912 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
linlin1165103172 2011-11-07
  • 打赏
  • 举报
回复
怎样把字符串“123456789”转成int型?
goodboy5201314 2009-10-23
  • 打赏
  • 举报
回复
strcmp(字符串1,字符串2)
fireyou 2009-10-23
  • 打赏
  • 举报
回复
自己写函数比较
userlon 2009-10-23
  • 打赏
  • 举报
回复
日期可以转换成数字型的,直接数字比较更简单。
problc 2009-10-22
  • 打赏
  • 举报
回复
int compare(char* str1,char* str2)
{
int y = strcmp(str1+6,str2+6);
int m = strcmp(str1+3,str2+3);
int d = strcmp(str1,str2);
if (y!=0) return y;
if (m!=0) return m;
if (d!=0) return d;
return 0;
}


int main()
{
char *date1_str ="22-10-2009";
char *date2_str ="23-11-2008";
cout<<compare(date1_str,date2_str);
}
la_feng 2009-10-22
  • 打赏
  • 举报
回复
#include<stdio.h>
#include<string.h>
int main()
{
char *date1_str ="22-10-2009" ;
char *date2_str ="23-10-2008";
if(strncmp(date1_str+6,date2_str+6,4)>0)
printf("前一个日期大 %s\n",date1_str);
else if(strncmp(date1_str+6,date2_str+6,4)<0)
printf("后一个日期大 %s\n",date2_str);
if(strncmp(date1_str+6,date2_str+6,4)==0)
{
if(strncmp(date1_str+3,date2_str+3,2)>0)
printf("前一个日期大 %s\n",date1_str);
else if(strncmp(date1_str+3,date2_str+3,2)<0)
printf("后一个日期大 %s\n",date2_str);
if(strncmp(date1_str+3,date2_str+3,2)==0)
{
if(strncmp(date1_str,date2_str,2)>0)
printf("前一个日期大 %s\n",date1_str);
else if(strncmp(date1_str,date2_str,2)<0)
printf("后一个日期大 %s\n",date2_str);
if(strncmp(date1_str+6,date2_str,2)==0)
printf("日期相同 %s\n",date1_str);
}
}
return 0;
}
太乙 2009-10-22
  • 打赏
  • 举报
回复
sscanf,将年月日搞到int里去,然后再比较!
michael1985_ 2009-10-22
  • 打赏
  • 举报
回复
先转换为数字格式,再比较
sparadise1003 2009-10-22
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 wanjingwei 的回复:]
行不行自己试下
extern int strcmp(char *s1,char * s2);
       

 
  功能:比较字符串s1和s2。
 
  说明:
        当s1 <s2时,返回值 <0
        当s1=s2时,返回值=0
        当s1>s2时,返回值>0
 
 
[/Quote]

strcmp可以比较字符串这个我当然知道,可是现在字符串存的是日期,我主要想根据日期来比较大小
liangyonglou 2009-10-22
  • 打赏
  • 举报
回复
将时间格式转换成秒计数,在比较,很容易的
la_feng 2009-10-22
  • 打赏
  • 举报
回复
#include<stdio.h>
#include<string.h>
int main()
{
char *date1_str ="22-10-2009" ;
char *date2_str ="23-11-2008";
if(strncmp(date1_str+6,date2_str+6,4)>0)
printf("qianzheda %s\n",date1_str+6);
return 0;
}
按照这个思路,先比较年份,然后是月份,最后是日,这样就可以了
pcboyxhy 2009-10-22
  • 打赏
  • 举报
回复
可以把他换算成UNIX时间戳再比较
也可以调整顺序为 年年年年-月月-日日 再用strcmp
phpjspasp 2009-10-22
  • 打赏
  • 举报
回复
你先写一个函数,把字符串转化为 struct
struct time{
int year;
int month;
int day;
}

再写个函数,比较两个struct time可以吧?
wanjingwei 2009-10-22
  • 打赏
  • 举报
回复
行不行自己试下
extern int strcmp(char *s1,char * s2);



功能:比较字符串s1和s2。

说明:
当s1<s2时,返回值<0
当s1=s2时,返回值=0
当s1>s2时,返回值>0

  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sparadise1003 的回复:]
引用 1 楼 akirya 的回复:
strcmp


确信可以吗??这两字符串中存放的是两个日期,我想比较这两个日期的大小?用strcmp可以吗?
[/Quote]
那你应该说明是比较日期大小,而不是日期大小.
sparadise1003 2009-10-22
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 akirya 的回复:]
strcmp
[/Quote]

确信可以吗??这两字符串中存放的是两个日期,我想比较这两个日期的大小?用strcmp可以吗?
  • 打赏
  • 举报
回复
strcmp

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧