whyyouhitme_
whyyouhitme_
采纳率100%
2018-04-05 10:13

关于比较字符串函数strcmp()

5
  • c
  • 字符串
已采纳

书中介绍
s1与s2的前i的字符一致,但是s1的第i+1个字符小于s2的第i+1个字符。函数会认为s1小于s2。例如“abc”小于“bcd”,“abd”小于“abe”。
能否理解为两个字符串的对应元素逐个比较,谁首先出现ASC码值小于对方的元素。就说:这个元素小于另一个元素?
例如:"abcdfeg"小于“z”“abcd”小于“abcccccccc”
以及“24 XXXXXXXXXX”小于“5”?
如果我理解的正确,那么有如下代码片段:
程序接收用户输入的日期和提醒,按时间顺序存储这些日期和对应当日的提醒,并输出。
for(i=0;i if(strcmp(day_str,reminders[i])
break;
for(j=num_remind;j>i;j--)
strcpy(reminders[j],reminders[j-1]);//把当前i标记的日期后面的所有字符串各自下移一行
strcpy(reminders[i]),day_str);
strcat(reminders[i],msg_str);//把此日期以及相应的提醒存入reminders[i]中
num_remind++;
请问下面这条语句的比较方法对吗?
if(strcmp(day_str,reminders[i]) 假设循环已经把第一条字符串“24 XXXXXXXXXX”存进了reminders数组中、
接下来的这条语句会把day_str(以字符串形式存储的下一个日期,我们假设是5)
拿来和reminders[i](也就是“24 XXXXXXXXXX”)进行比较。得出的结果应该是
“5”>“24 XXXXXXXXXX”。这样程序就不会把5号以及5号的提醒事项塞入数组了

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

6条回答

  • hzp787813145 Zip.huang 3年前

    这样的比较也没问题 但是用户输入时间必须要统一格式 比如你等待比较的是20180224 那么你输入的时间必须也得是20180205也就是输入格式必须一致 YYYYMMDD
    这样比较就不会有错 你在处理的时候还得对输入的时间进行格式以及输入的数据是否正确才行。

    点赞 评论 复制链接分享
  • qq_41774046 qq_41774046 3年前

    strcpy(reminders[j],reminders[j-1]) 这样合适吗,字符串拷贝没那么高级吧,并不是整个字符串一起复制的,他应该是一个字符一个字符从前往后复制的吧。这样或许会覆盖吧

    点赞 2 评论 复制链接分享
  • whyyouhitme_ whyyouhitme_ 3年前

    第一行缺失了一些内容,试过两次都显示不出来。在这里补上
    第一行的内容为:for(i=0;i<num_remind;i++) (num_remind是计数器,记录输入了几条提醒)if(strcmp(day_str,reminders[i])

    点赞 2 评论 复制链接分享
  • qq1534005549 ipv100 3年前

    字符串比较 ,就是从第一个字符开始逐个比较,只要找到一个后面就省掉

    点赞 1 评论 复制链接分享
  • lwm184878893 lwm184878893 3年前

    这样太复杂,建议采用指针方法,还不需要多余的buffer!

    点赞 1 评论 复制链接分享
  • sinat_26691533 白白白啊 3年前

    把两个字符串相对应的字符拿出来进行比较,返回第一个不等的字符比较的大小即可。C语言系统为用户提供了库函数strcmp可以实现以上函数功能。调用格式为:strcmp(s1,s2);
    teacher 和teaching,第一个不等的字符是teacher的e和teaching的i,所以teaching大

    点赞 评论 复制链接分享

为你推荐