MUstar

IoT C언어 0710 - EX15_3

Jul 15th, 2017
68
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <string.h>
  3.  
  4. void init_intro(char (*intro)[80], char **pint);
  5. int input_intro(char (*intro)[80]);
  6. void sort_intro(char **pint, int cnt);
  7. void print_intro(int mode, void *vp, int cnt);
  8.  
  9. int main(void)
  10. {
  11.     char intro[10][80];
  12.     char *pint[10];
  13.     int cnt;
  14.  
  15.     init_intro(intro,pint);
  16.     cnt = input_intro(intro);
  17.     sort_intro(pint,cnt);
  18.     print_intro(1,pint,cnt);
  19.     print_intro(0,intro,cnt);
  20.  
  21.     return 0;
  22. }
  23.  
  24. void init_intro(char (*intro)[80], char **pint)
  25. {
  26.     int i=0;
  27.     while(i<10)
  28.     {
  29.         //stpcpy(pint[i],intro[i]);
  30.         pint[i] = intro[i];
  31.         i++;
  32.     }
  33. }
  34.  
  35. int input_intro(char (*intro)[80])
  36. {
  37.     static int cnt=0;
  38.     while(1)
  39.     {
  40.         char temp[80];
  41.         printf("인사말 입력 : ");
  42.         fgets(temp,sizeof(temp),stdin);
  43.         if(strncmp(temp,"end",3)==0)break;
  44.         else if(cnt==10) break;
  45.         else
  46.         {
  47.             strcpy(intro[cnt],temp);
  48.             cnt++;
  49.         }
  50.     }
  51.     return cnt;
  52. }
  53.  
  54. void sort_intro(char **pint, int cnt)
  55. {
  56.     for(int i=0;i<cnt-1;i++)
  57.     {
  58.         for(int j=i+1;j<cnt;j++)
  59.         {
  60.             if (strcmp(pint[i],pint[j])>0)
  61.             {
  62.                 char *temp;
  63.                 temp = pint[i];
  64.                 pint[i] = pint[j];
  65.                 pint[j] = temp;
  66.                
  67.                 //char temp[80];
  68.                 //strcpy(temp,pint[j]);
  69.                 //strcpy(pint[j],pint[i]);
  70.                 //strcpy(pint[i],temp);
  71.             }
  72.         }
  73.     }
  74. }
  75.  
  76. void print_intro(int mode, void *vp, int cnt)
  77. {
  78.     if(mode==1)
  79.     {
  80.         char **p_temp = vp;
  81.         printf("\n\n# 사전순으로 출력...\n");
  82.         for(int i=0;i<cnt;i++)
  83.             printf("%s",p_temp[i]);
  84.     }
  85.     else
  86.     {
  87.         char (*p_temp)[80] = vp;
  88.         printf("\n\n# 입력순으로 출력...\n");
  89.         for(int i=0;i<cnt;i++)
  90.             printf("%s",p_temp[i]);
  91.     }
  92. }
RAW Paste Data