首页 > 代码库 > malloc动态分配字符串数组“ 一个月内的提醒”
malloc动态分配字符串数组“ 一个月内的提醒”
1 //输出一个月提醒 2 3 #include <stdio.h> 4 #include <stdlib.h> 5 #include <string.h> 6 7 #define MAX_REMIND 50 //提醒的数量 8 #define MSG_LEN 60 //提醒的长度 9 int main(void){ 10 int read_line(char str[], int n); 11 char *reminders[MAX_REMIND]; 12 char day_str[3], msg_str[MSG_LEN+1]; 13 int day, i ,j, num_remind = 0; 14 15 for(;;){ 16 if(num_remind == MAX_REMIND){ 17 printf("--No space left--\n"); 18 break; 19 } 20 21 printf("Enter day and reminder:"); 22 scanf("%2d",&day); 23 if (day == 0) break; 24 sprintf(day_str, "%2d",day); 25 read_line(msg_str,MSG_LEN); //读取字符串 26 27 for(i=0;i<num_remind;i++) //将日期靠前的提醒放在前面 28 if(strcmp(day_str,reminders[i]) < 0) break; 29 for(j=num_remind;j>i;j--) 30 reminders[j]=reminders[j-1]; 31 32 reminders[i] = malloc(2 + strlen(msg_str) + 1 ); 33 if(reminders[i] == NULL) printf("--No space left--\n"); 34 35 strcpy(reminders[i],day_str); 36 strcat(reminders[i],msg_str); 37 38 num_remind++; 39 40 } 41 printf("\n Day Remind\n"); 42 for(i=0;i<num_remind;i++) 43 printf("%s\n",reminders[i]); 44 45 return 0; 46 } 47 48 int read_line(char str[], int n){ 49 int ch, i=0; 50 while ( (ch=getchar()) !=‘\n‘) 51 if(i<n) 52 str[i++]=ch; 53 str[i]=‘\n‘; 54 return i; 55 }
malloc动态分配字符串数组“ 一个月内的提醒”
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。