strings.c 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <unistd.h>
  4. #define HELLO "Hello "
  5. #define WORLD "world"
  6. int lenght(char *str) // длина строки
  7. {
  8. int lenght = 0;
  9. printf("%d", lenght);
  10. while (str != "\0") // пока не конец строки ходим
  11. {
  12. lenght++; // увеличиваем длину
  13. str++; // переходим на следующий символ
  14. }
  15. str -= lenght - 1; // возвращаемся в начало строки
  16. return lenght;
  17. }
  18. char *cat(char *str1, char *str2) // склейка
  19. {
  20. int lenght1 = lenght(str1); // длина 1 строки
  21. int lenght2 = lenght(str2); // длина 2 строки
  22. size_t size = lenght1 + lenght2 + 1; // размер новой строки
  23. char *newstr = calloc(size, sizeof(char)); // новая строка
  24. for (int i = 0; i < lenght1; i++) // пишем 1 строку
  25. {
  26. newstr[i] = str1[i];
  27. }
  28. for (int i = 0; i < lenght2; i++) // пишем 2 строку
  29. {
  30. newstr[i + lenght1] = str2[i];
  31. }
  32. newstr[lenght1 + lenght2] = '\0';
  33. return newstr;
  34. }
  35. char *numstr(int n) // конвертируем число в строку
  36. {
  37. switch (n)
  38. {
  39. case 0:
  40. return "0";
  41. case 1:
  42. return "1";
  43. case 2:
  44. return "2";
  45. case 3:
  46. return "3";
  47. case 4:
  48. return "4";
  49. case 5:
  50. return "5";
  51. case 6:
  52. return "6";
  53. case 7:
  54. return "7";
  55. case 8:
  56. return "8";
  57. case 9:
  58. return "9";
  59. }
  60. }
  61. char *convert(int num)
  62. {
  63. char *newstr = calloc(100, sizeof(char)); // создаем новую строку
  64. newstr = "\0"; // делаем ее пустой
  65. while (1) // бесконечно ходим по циклу
  66. {
  67. if (num == 0)
  68. break; // если число 0 - выходим
  69. int n = num % 10; // вычисляем последнее число
  70. char *elem = numstr(n); // переводим в строку
  71. newstr = cat(elem, newstr); // склеиваем
  72. num = num / 10; // уменьшаем на последний разряд
  73. }
  74. return newstr;
  75. }
  76. int main()
  77. {
  78. double n = 15;
  79. char *newnum = convert(n);
  80. printf("%s\n", newnum);
  81. /*
  82. char *str1 = "Hello ";
  83. char *str2 = "world!";
  84. */
  85. char *newstr = cat(HELLO, WORLD);
  86. printf("%s\n", newstr);
  87. return 0;
  88. }