Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Author-XAgent Smith
- //Date:Oct 1,2018
- /*Function pointer example using sort function in more then one way */
- #include<stdio.h>
- #include <dynamic.h>
- typedef int (*fptr)(const char*,const char*);
- int string_compare(const char *str1,const char *str2)
- {
- if(*(str1+0)>(*(str2+0)))
- return 1;
- else
- return 0;
- }
- char character_lower_case(char character)
- {
- if(character>='A'&&character<='Z')
- character=character+'a'-'A';
- return character;
- }
- size_t string_length(const char *string)
- {
- int Length=0;
- while((*(string++)!='\0'?++Length:
- 0));
- return Length;
- }
- char *string_to_lower(const char *str)
- {
- char *tmp=(char*)malloc(string_length(str)*sizeof(char)+1);
- char *start=tmp;
- while((*(tmp++)=character_lower_case(*(str++)))!='\0');
- return start;
- }
- int compare_Ignore_cases(const char *string,const char *string0)
- {
- char *t1=string_to_lower(string);
- char *t2=string_to_lower(string0);
- int result =string_compare(t1,t2);
- safe_free(t1);
- safe_free(t2);
- return result;
- }
- int compare(const char *s1,const char *s2)
- {
- return string_compare(s1,s2);
- }
- void sort(char *names[],size_t n,fptr opcode)
- {
- int swap=1;
- int i=0;
- while(swap)
- {
- swap=0;
- for(i=0;i<n-1;i++)
- {
- if(opcode(names[i],names[i+1])>0)
- {
- swap=1;
- char *temp=names[i];
- names[i]=names[i+1];
- names[i+1]=temp;
- }
- }
- }
- }
- void display_names(char **arr,size_t size)
- {
- for(int i=0;i<size;i++)
- printf("\n%s",*(arr+i));
- }
- int main()
- {
- char *arr[]={"XAgent Smith","bop","Ted","Fanny","Hinata","Want_Hinata"};
- sort(arr,6,compare_Ignore_cases);
- display_names(arr,6);
- //printf("\n\nout:%c",character_lower_case('C'));
- return 0;
- }
Add Comment
Please, Sign In to add comment