string.c 951 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. #include "string.h"
  2. /**
  3. * K&R implementation
  4. */
  5. void int_to_ascii(int n, char str[]) {
  6. int i, sign;
  7. if ((sign = n) < 0) n = -n;
  8. i = 0;
  9. do {
  10. str[i++] = n % 10 + '0';
  11. } while ((n /= 10) > 0);
  12. if (sign < 0) str[i++] = '-';
  13. str[i] = '\0';
  14. reverse(str);
  15. }
  16. /* K&R */
  17. void reverse(char s[]) {
  18. int c, i, j;
  19. for (i = 0, j = strlen(s)-1; i < j; i++, j--) {
  20. c = s[i];
  21. s[i] = s[j];
  22. s[j] = c;
  23. }
  24. }
  25. /* K&R */
  26. int strlen(char s[]) {
  27. int i = 0;
  28. while (s[i] != '\0') ++i;
  29. return i;
  30. }
  31. void append(char s[], char n) {
  32. int len = strlen(s);
  33. s[len] = n;
  34. s[len+1] = '\0';
  35. }
  36. void backspace(char s[]) {
  37. int len = strlen(s);
  38. s[len-1] = '\0';
  39. }
  40. /* K&R
  41. * Returns <0 if s1<s2, 0 if s1==s2, >0 if s1>s2 */
  42. int strcmp(char s1[], char s2[]) {
  43. int i;
  44. for (i = 0; s1[i] == s2[i]; i++) {
  45. if (s1[i] == '\0') return 0;
  46. }
  47. return s1[i] - s2[i];
  48. }