Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2014
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.29 KB | None | 0 0
  1. #include <stdio.h> // fprintf
  2. #include <stdlib.h> // malloc
  3. #include <string.h> // strlen
  4. #include <ctype.h> // toupper, tolower
  5.  
  6. /*
  7. * a string is an array of characters, in C, all arrays
  8. * are always passed never passed value, always a pointer to
  9. * the variable
  10. * This is why the caller does not need to call the function like:
  11. * camel_case_rev(src, &dest, len)
  12. *
  13. * Since here the array of characters ("a string") is already being
  14. * passed as a pointer value
  15. */
  16. void str_case_rev(const char *src, char *dest, size_t len)
  17. {
  18. size_t i = 0;
  19.  
  20. for(; i < len; i++)
  21. {
  22. if(src[i] <= 'Z' && src[i] >= 'A')
  23. {
  24. *(dest + i) = (char)tolower((int)src[i]);
  25. }
  26. else if(src[i] <= 'z' && src[i] >= 'a')
  27. {
  28. *(dest + i) = (char)toupper((int)src[i]);
  29. }
  30. else
  31. {
  32. *(dest + i) = src[i];
  33. }
  34. }
  35.  
  36. i++;
  37. *(dest + i) = '';
  38. }
  39.  
  40. int main(int argc, char **argv)
  41. {
  42. if(argc < 2)
  43. {
  44. fprintf(stderr, "Usage: %s <string>n", argv[0]);
  45. return EXIT_FAILURE;
  46. }
  47.  
  48. char *dest = NULL;
  49.  
  50. size_t len = strlen(argv[1]);
  51.  
  52. dest = malloc(len + 1);
  53.  
  54. if(NULL == dest)
  55. {
  56. fprintf(stderr, "Memory errorn");
  57. return EXIT_FAILURE;
  58. }
  59.  
  60. str_case_rev(argv[1], dest, len);
  61.  
  62. fprintf(stdout, "%sn", dest);
  63.  
  64. free(dest);
  65.  
  66. return EXIT_SUCCESS;
  67. }
  68.  
  69. static const char convert[] = {
  70. 0, 1 ,2 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
  71. ....
  72. /* The character code for 'A' 65 replace with 'a' 97 */
  73.  
  74. 62, 63, 64, 'a', 'b', 'c', 'd',
  75. ....
  76. /* The character code for 'a' 97 replace with 65 'A' */
  77. 94, 95, 96, 'A', 'B', 'C', 'D',
  78.  
  79. ....
  80. 248, 249, 250, 251, 252, 253, 254, 255};
  81.  
  82. void str_case_rev(const unsigned char *src, char *dest, size_t len)
  83. {
  84. for(; i < len; i++)
  85. {
  86. dest[len] = convert[src[len]];
  87. }
  88. dest[len] = '';
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement