fork download
  1. #include <stdio.h>
  2.  
  3. #define SIZE 100
  4.  
  5. int myStringCompareArray(const char string1[],
  6. const char string2[])
  7. {
  8. int i = 0;
  9.  
  10. while (string1[i] != '\0' &&
  11. string2[i] != '\0')
  12. {
  13. if (string1[i] < string2[i])
  14. {
  15. return -1;
  16. }
  17.  
  18. if (string1[i] > string2[i])
  19. {
  20. return 1;
  21. }
  22.  
  23. ++i;
  24. }
  25.  
  26. if (string1[i] == '\0' &&
  27. string2[i] == '\0')
  28. {
  29. return 0;
  30. }
  31.  
  32. if (string1[i] == '\0')
  33. {
  34. return -1;
  35. }
  36.  
  37. return 1;
  38. }
  39.  
  40. int myStringComparePointer(const char *string1,
  41. const char *string2)
  42. {
  43. while (*string1 != '\0' &&
  44. *string2 != '\0')
  45. {
  46. if (*string1 < *string2)
  47. {
  48. return -1;
  49. }
  50.  
  51. if (*string1 > *string2)
  52. {
  53. return 1;
  54. }
  55.  
  56. ++string1;
  57. ++string2;
  58. }
  59.  
  60. if (*string1 == '\0' &&
  61. *string2 == '\0')
  62. {
  63. return 0;
  64. }
  65.  
  66. if (*string1 == '\0')
  67. {
  68. return -1;
  69. }
  70.  
  71. return 1;
  72. }
  73.  
  74. int myStringNCompareArray(const char string1[],
  75. const char string2[],
  76. int number)
  77. {
  78. for (int i = 0; i < number; ++i)
  79. {
  80. if (string1[i] == '\0' ||
  81. string2[i] == '\0')
  82. {
  83. if (string1[i] == string2[i])
  84. {
  85. return 0;
  86. }
  87.  
  88. if (string1[i] == '\0')
  89. {
  90. return -1;
  91. }
  92.  
  93. return 1;
  94. }
  95.  
  96. if (string1[i] < string2[i])
  97. {
  98. return -1;
  99. }
  100.  
  101. if (string1[i] > string2[i])
  102. {
  103. return 1;
  104. }
  105. }
  106.  
  107. return 0;
  108. }
  109.  
  110. int myStringNComparePointer(const char *string1,
  111. const char *string2,
  112. int number)
  113. {
  114. for (int i = 0; i < number; ++i)
  115. {
  116. if (*string1 == '\0' ||
  117. *string2 == '\0')
  118. {
  119. if (*string1 == *string2)
  120. {
  121. return 0;
  122. }
  123.  
  124. if (*string1 == '\0')
  125. {
  126. return -1;
  127. }
  128.  
  129. return 1;
  130. }
  131.  
  132. if (*string1 < *string2)
  133. {
  134. return -1;
  135. }
  136.  
  137. if (*string1 > *string2)
  138. {
  139. return 1;
  140. }
  141.  
  142. ++string1;
  143. ++string2;
  144. }
  145.  
  146. return 0;
  147. }
  148.  
  149. int main(void)
  150. {
  151. char string1[SIZE];
  152. char string2[SIZE];
  153. int number;
  154.  
  155. printf("Enter the first string: ");
  156. fgets(string1, SIZE, stdin);
  157.  
  158. printf("Enter the second string: ");
  159. fgets(string2, SIZE, stdin);
  160.  
  161. printf("Enter number of characters to compare: ");
  162. scanf("%d", &number);
  163.  
  164. printf("\nUsing array notation:\n");
  165.  
  166. printf("strcmp result = %d\n",
  167. myStringCompareArray(string1, string2));
  168.  
  169. printf("strncmp result = %d\n",
  170. myStringNCompareArray(string1,
  171. string2,
  172. number));
  173.  
  174. printf("\nUsing pointer notation:\n");
  175.  
  176. printf("strcmp result = %d\n",
  177. myStringComparePointer(string1, string2));
  178.  
  179. printf("strncmp result = %d\n",
  180. myStringNComparePointer(string1,
  181. string2,
  182. number));
  183.  
  184. return 0;
  185. }
Success #stdin #stdout 0s 5328KB
stdin
Standard input is empty
stdout
Enter the first string: Enter the second string: Enter number of characters to compare: 
Using array notation:
strcmp result = 1
strncmp result = 0

Using pointer notation:
strcmp result = 1
strncmp result = 0