Author: Not specified Language: text
Description: Not specified Timestamp: 2013-05-19 15:36:53 +0000
View raw paste Reply
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. char* getstr();
  6. char* addspaces(char* buf);
  7. char* result(char* buf);
  8.  
  9. int main()
  10. {
  11. char *str=NULL, *res=(char *)malloc(101);
  12.     while((str = getstr()) )
  13.     {
  14.         res = result(str);
  15.         printf("Result    : %s\n\n", res);
  16.         free(res);
  17.         free(str);
  18.     }
  19. return 0;
  20. }
  21.  
  22. char* getstr()
  23. {
  24. char *ptr = (char *)malloc(1);
  25. char buf[101];
  26. int n, len = 0;
  27.   printf("Input line: ");
  28.     *ptr = '\0';
  29.     do
  30.     {
  31.         n = scanf("%100[^\n]", buf);
  32.         if(n < 0)
  33.             {
  34.                 free(ptr);
  35.                 ptr = NULL;
  36.                 break;
  37.             }
  38.  
  39.     if(n == 0)
  40.         scanf("%*c");
  41.     else
  42.         {
  43.             len += strlen(buf);
  44.             ptr = (char *) realloc(ptr, len + 1);
  45.             strcat(ptr, buf);
  46.         }
  47.  
  48.     }
  49.     while(n > 0);
  50. return ptr;
  51. }
  52.  
  53. char* addspaces(char* buf)
  54. {
  55. int i, len = 0;
  56.     len += strlen(buf);
  57.     i = len;
  58.     buf = (char *) realloc(buf, len + 3);
  59.     buf[i+2] = '\0';
  60.     buf[i+1] = ' ';
  61.     while(i >= 1)
  62.     {
  63.         buf[i] = buf[i-1];
  64.         i--;
  65.     }
  66.     buf[0]=' ';
  67. return buf;
  68. }
  69.  
  70. char* result(char* buf)
  71. {
  72. int i = 0, j = 0, n;
  73. char c, prev, next, buffer[21], *res;
  74.     res = (char *)malloc(101);
  75.     *res = NULL;
  76.     buf = addspaces(buf);
  77.  
  78.     while(*buf != '\0')
  79.     {
  80.         c = *buf;
  81.         if (c == ' ')
  82.         {
  83.             prev = buf[j+1];
  84.             next = buf[i-1];
  85.             if(prev == next)
  86.             {
  87.                 n = 0;
  88.                 while(j <= i)
  89.                 {
  90.                     buffer[n] = buf[j+1];
  91.                     n++;
  92.                     j++;
  93.                 }
  94.                 buffer[n+1] = '\0';
  95.                 strcat(res, buffer);
  96.                 j = i;
  97.             }
  98.  
  99.             i++;
  100.             buf++;
  101.         }
  102.         else
  103.         {
  104.             i++;
  105.             buf++;
  106.         }
  107.     }
  108. return res;
  109. }
View raw paste Reply