hqt

String Manipulation

hqt
Jul 20th, 2012
192
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 1.49 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<string.h>
  3. #define MAX 100
  4.  
  5. void inputlist(char[][80], int);
  6. void sortlist(char[][80], int);
  7. void display (char[][80], int);
  8. void removeDuplicate(char [][80], int*);
  9.  
  10. main(){
  11.     char list[MAX][80];
  12.     int size = 7;
  13.     inputlist(list, size);
  14.     display(list, size);
  15.     removeDuplicate(list, &size);
  16.     display(list, size);
  17. }
  18.  
  19. void inputlist(char list[][80], int n){
  20.     int i = 0;
  21.     for(i=0; i<n; i++){
  22.         scanf("%s",list[i]);
  23.     }
  24.     printf("-------------------------\n");
  25. }
  26.  
  27. void sortlist(char list[][80], int size){
  28.     int i = 0, j = 0;
  29.     char tmp[80];
  30.     for(i=0; i<size; i++){
  31.         for(j=i+1; j<size; j++){
  32.             if (strcmp(list[i], list[j])>0){
  33.                 strcpy(tmp, list[i]);
  34.                 strcpy(list[i], list[j]);
  35.                 strcpy(list[j], tmp);
  36.             }
  37.         }
  38.     }
  39. }
  40.  
  41. void display(char list[][80], int n){
  42.     printf("Display:\n");
  43.     int i = 0;
  44.     for(i=0; i<n; i++){
  45.         printf("%s\n", list[i]);
  46.     }
  47.     printf("-----------------------\n");
  48. }
  49.  
  50. void removeDuplicate(char list[][80], int*n){
  51.     sortlist(list,*n);
  52.     char d[MAX][80];
  53.     int index = 0;
  54.     int size =  0 ;
  55.     while(index < *n){
  56.             memcpy(d[size++],list[index++], sizeof(d[0]));
  57.             while (strcmp(list[index], list[index-1]) == 0){
  58.                 index++;
  59.             }
  60.     }
  61.     //display(d, size); // test before copy
  62.     memcpy(list, d, sizeof(d[0])*size);
  63.     *n = size;
  64. }
Advertisement
Add Comment
Please, Sign In to add comment