In the web-browser, save this file as 'Text' type.
//***************************************************************** // Copyright policy is GNU/GPL but additional restriction is // that you include author's name and email on all copies // Author : Al Dev Email: alavoor@yahoo.com //***************************************************************** // To prevent memory problems - a char class to manage character variables // Always prefer to use mychar or string class instead of char[] or char * #ifdef DEBUG_MYCHAR #include <stdlib.h> // for putenv #include "mychar.h" ///////////////////////////////////////////////// // A example program to demo usage of mychar ///////////////////////////////////////////////// int main(int argc, char **argv) { char p_name[1024]; sprintf(p_name, "PROGRAM_NAME=%s", argv[0]); putenv(p_name); print_total_memsize(); // in the beginning mychar aa, bb; bb.str_cpy(" bbSTRing "); // Testing the + operator aa + " rhs "; fprintf(stdout, "\n0) aa.val is :%sEOF\n", aa.val); // Testing the = operator aa = " lhs " ; fprintf(stdout, "0) aa.val is :%sEOF\n", aa.val); // Testing the + operator //" lhs " + aa; //fprintf(stdout, "0) aa.val is :%sEOF\n", aa.val); aa.str_cpy(bb.val); aa.to_upper(); fprintf(stdout, "1) aa.val is :%sEOF\n", aa.val); aa.str_cpy(bb.val); aa.to_lower(); fprintf(stdout, "2) aa.val is :%sEOF\n", aa.val); aa.str_cpy(bb.val); aa.ltrim(); fprintf(stdout, "3) aa.val is :%sEOF\n", aa.val); aa.str_cpy(bb.val); aa.rtrim(); fprintf(stdout, "4) aa.val is :%sEOF\n", aa.val); aa.str_cpy(bb.val); aa.trim(); fprintf(stdout, "5) aa.val is :%sEOF\n", aa.val); aa.str_cpy(bb.val); aa = aa + " testing newlines \n\n\n\n"; aa.chop(); fprintf(stdout, "5-1) aa.val is :%sEOF\n", aa.val); aa.str_cpy(bb.val); aa = aa + " rhs "; fprintf(stdout, "6) aa.val is :%sEOF\n", aa.val); aa.str_cpy(bb.val); aa = " lhs " + aa; fprintf(stdout, "7) aa.val is :%sEOF\n", aa.val); aa.str_cpy(bb.val); aa = " lhs " + aa + " rhs " + " 9989 " + " 33 "; fprintf(stdout, "8) aa.val is :%sEOF\n", aa.val); aa.str_cpy(bb.val); aa = " lhs " + aa + " rhs " + " 9989 " + " 33 "; fprintf(stdout, "8) aa.val is :%sEOF\n", aa.val); aa.str_cpy(bb.val); aa = " lhs " + aa + " rhs " + " 9989 " + " 33 "; fprintf(stdout, "8) aa.val is :%sEOF\n", aa.val); aa.str_cpy(bb.val); aa = " lhs " + aa + " rhs " + " 9989 " + " 33 "; fprintf(stdout, "8) aa.val is :%sEOF\n", aa.val); aa.str_cpy(bb.val); aa = " lhs " + aa + " rhs " + " 9989 " + " 33 "; fprintf(stdout, "8) aa.val is :%sEOF\n", aa.val); aa.str_cpy(bb.val); aa = " lhs " + aa + " rhs " + " 9989 " + " 33 "; fprintf(stdout, "8) aa.val is :%sEOF\n", aa.val); aa.str_cpy(bb.val); aa = " lhs " + aa + " rhs " + " 9989 " + " 33 "; fprintf(stdout, "8) aa.val is :%sEOF\n", aa.val); aa.str_cpy(bb.val); aa = " lhs " + aa + " rhs " + " 9989 " + " 33 "; fprintf(stdout, "8) aa.val is :%sEOF\n", aa.val); aa.str_cpy(bb.val); aa = " lhs " + aa + " rhs " + " 9989 " + " 33 "; fprintf(stdout, "8) aa.val is :%sEOF\n", aa.val); aa.str_cpy(bb.val); aa = " lhs " + aa + " rhs " + " 9989 " + " 33 " + aa + bb; fprintf(stdout, "8) aa.val is :%sEOF\n", aa.val); aa.str_cpy(" AA value "); aa = bb + "alkja " + " 99djd " ; fprintf(stdout, "9) aa.val is :%sEOF\n", aa.val); aa.str_cpy(" AA value "); aa = (mychar) "alkja " + " 99djd " ; fprintf(stdout, "10) aa.val is :%sEOF\n", aa.val); aa.str_cpy(" AA value "); aa += (mychar) " al dev test kkk... " + " al2 slkj" + " al3333 "; fprintf(stdout, "11) aa.val is :%sEOF\n", aa.val); aa.str_cpy(" AA value "); aa = aa + " add aa " + aa + aa + aa + " 1111 " + " 2222 " + aa + aa + aa + " 3333 "; fprintf(stdout, "12) aa.val is :%sEOF\n", aa.val); aa.str_cpy("12345678"); aa.reverse(); fprintf(stdout, "13) aa.val is :%sEOF\n", aa.val); aa.str_cpy(" AA value "); aa = aa + " add aa " + aa + 1111 +" "+ 2222 + " " + 3.344 + aa; fprintf(stdout, "14) aa.val is :%sEOF\n", aa.val); // Test equal to operators aa.str_cpy(" AA value "); mychar cc(" AA value "); if (aa == cc) fprintf(stdout, "\naa=%s and cc=%s are equal!!\n", aa.val, cc.val); else fprintf(stdout, "\naa=%s and cc=%s are NOT equal!!\n", aa.val, cc.val); cc = "CC"; if (aa == cc) fprintf(stdout, "\naa=%s and cc=%s are equal!!\n", aa.val, cc.val); else fprintf(stdout, "\naa=%s and cc=%s are NOT equal!!\n", aa.val, cc.val); if (aa == " AA value ") fprintf(stdout, "\naa=%s and string are equal!!\n", aa.val); else fprintf(stdout, "\naa=%s and string are NOT equal!!\n", aa.val); if (aa == " AA valuexxx ") fprintf(stdout, "\naa=%s and string are equal!!\n", aa.val); else fprintf(stdout, "\naa=%s and string are NOT equal!!\n", aa.val); // You can use aa.val like a 'char *' variable in programs !! fprintf(stdout, "\n "); for (unsigned long tmpii = 0; tmpii < aa.length(); tmpii++) { fprintf(stdout, "aa.val[%ld]=%c ", tmpii, aa.val[tmpii]); } fprintf(stdout, "\n"); // Using pointers on 'char *' val ... fprintf(stdout, "\n "); for (; *aa.val != 0; aa.val++) { fprintf(stdout, "aa.val=%c ", *aa.val); } fprintf(stdout, "\n"); print_total_memsize(); // in the end exit(0); } #endif // DEBUG_MYCHAR