大佬教程收集整理的这篇文章主要介绍了了解一个月提醒程序中的strcmp()函数,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
#include <stdio.h> #include <String.h> #define MAX_REMIND 50 /* Maximum number of reminders */ #define MSG_LEN 60 /* max length of reminders message */ int read_line(char str[],int n); int main(void) { char reminders[MAX_REMIND][MSG_LEN+3]; char day_str[3],msg_str[MSG_LEN+1]; int day,i,j,num_remind = 0; for(;;) { if(num_remind == MAX_REMIND) { printf("--No space left--\n"); break; } printf("Enter day and reminder: "); scanf("%2d",&day); if(day == 0) break; sprintf(day_str,"%2d",day); read_line(msg_str,MSG_LEN); for(i = 0; i < num_remind; i++) if(strcmp(day_str,reminders[i]) < 0) break; for(j = num_remind; j > i; j--) strcpy(reminders[j],reminders[j - 1]); strcpy(reminders[i],day_str); strcat(reminders[i],msg_str); num_remind++; } printf("\nDay Reminder\n"); for(i = 0; i < num_remind; i++) printf(" %s\n",reminders[i]); return 0; } int read_line(char str[],int n) { int ch,i = 0; while((ch = getchar()) != '\n') if (i < n) str[i++] = ch; str[i] = '\0'; return i; }@H_801_3@我理解的是,字符串存储在2D数组中,其中每一行都接受来自用户的字符串.程序首先获取日期(用户的两位小数)并使用sprintf()函数将其转换为字符串.然后它将转换后的字符串日期与存储在reminder [] []数组中的字符串进行比较.
for(i = 0; i < num_remind; i++) { printf("%s comparing to %s is %d \n",day_str,reminders[i],strcmp(day_str,reminders[i])); if(strcmp(day_str,reminders[i]) < 0) { break; } }@H_801_3@正如您所看到的,当新输入的day_str小于存储的提醒开头的任何其他提醒时,for循环被中断.
以这种方式获得的i在下一个for循环中用于将所有存储的提醒从num_remind转移到i,每个1个位置(从最后一个元素到i).
最后这两行将day_str和msg_str放在正确的位置:strcpy(reminders[i],day_str); strcat(reminders[i],msg_str);@H_801_3@看看这个Insertion sort来理解这种排序.
以上是大佬教程为你收集整理的了解一个月提醒程序中的strcmp()函数全部内容,希望文章能够帮你解决了解一个月提醒程序中的strcmp()函数所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。