// Sample program 2 #include #include #define BUFSIZE 200 // Name convention: all evaluated types start with // "T_" and contain only small letters apart from this /*@ +matchanyintegral +typeprefix T_&* @*/ static /*@null@*/ char* allocmem(void) /*@modifies nothing@*/ ; static void deallocmem(char*) ; static int get_data (char *outputdata) /*@modifies outputdata@*/; static int reverse_data(char *inputdata) /*@modifies inputdata@*/; static int S_num; int main(/*@unused@*/ int argc, /*@unused@*/char **argv) { char* dpointer=NULL; int char_cnt=0; int space_cnt=0; S_num=0; dpointer = allocmem(); // if (dpointer==NULL) return 0; char_cnt = get_data (dpointer); char_cnt = reverse_data (dpointer); printf ("Number of characters: %i Output: %s\n", char_cnt, dpointer); deallocmem (dpointer); if (char_cnt ==0) { return 0; } else { return 0; } return 0; // Code inaccessible } int reverse_data(char *inputdata) { int i =0; char c; int a = strlen(inputdata); while (i<=a/2-1) { c=*(inputdata+i); *(inputdata+i) = *(inputdata+a-i-1); *(inputdata+a-i-1)=c; // i++; } return a; } int get_data (char *inputdata) { int i=0; printf ("Enter a strings: "); (void) fgets (inputdata, BUFSIZE-1, stdin); S_num = strlen (inputdata); return i; } char* allocmem(void) { return (char*)malloc((size_t)BUFSIZE); } void deallocmem(char* char_p) { free (char_p); return; }