fork(1) download
  1. #include <stdio.h>
  2. #include <string.h>
  3. #include <stdlib.h>
  4.  
  5. // Функция для транслитерации одного символа
  6. const char* transliterate_char(char c) {
  7. switch (c) {
  8. case 'a': case 'A': return "а";
  9. case 'b': case 'B': return "б";
  10. case 'c': case 'C': return "к";
  11. case 'd': case 'D': return "д";
  12. case 'e': case 'E': return "е";
  13. case 'f': case 'F': return "ф";
  14. case 'g': case 'G': return "г";
  15. case 'h': case 'H': return "х";
  16. case 'i': case 'I': return "и";
  17. case 'j': case 'J': return "й";
  18. case 'k': case 'K': return "к";
  19. case 'l': case 'L': return "л";
  20. case 'm': case 'M': return "м";
  21. case 'n': case 'N': return "Н";
  22. case 'o': case 'O': return "О";
  23. case 'p': case 'P': return "П";
  24. case 'q': case 'Q': return "К";
  25. case 'r': case 'R': return "Р";
  26. case 's': case 'S': return "С";
  27. case 't': case 'T': return "Т";
  28. case 'u': case 'U': return "У";
  29. case 'v': case 'V': return "В";
  30. case 'w': case 'W': return "В";
  31. case 'x': case 'X': return "КС";
  32. case 'y': case 'Y': return "И";
  33. case 'z': case 'Z': return "З";
  34. default: {
  35. // Для всех остальных символов (пробелы, знаки препинания) возвращаем исходный символ
  36. static char result[2];
  37. result[0] = c;
  38. result[1] = '\0';
  39. return result;
  40. }
  41. }
  42. }
  43.  
  44. // Функция для транслитерации всей строки
  45. char* transliterate_string(const char* input) {
  46. // Выделяем буфер с запасом (результат может быть длиннее исходного, например, "x" -> "кс")
  47. char* result = malloc(strlen(input) * 2 + 1);
  48. result[0] = '\0'; // Начинаем с пустой строки
  49.  
  50. // Проходим по каждому символу входной строки
  51. for (int i = 0; i < strlen(input); i++) {
  52. // Получаем транслитерированный вариант символа
  53. const char* transliterated_char = transliterate_char(input[i]);
  54. // Добавляем его к результирующей строке
  55. strcat(result, transliterated_char);
  56. }
  57.  
  58. return result;
  59. }
  60. int main() {
  61. // Исходная фраза на латинице
  62. const char* latin_phrase = "Hello World";
  63.  
  64. // Транслитерируем её
  65. char* transliterated_phrase = transliterate_string(latin_phrase);
  66.  
  67. // Выводим результат
  68. printf("Исходная фраза: %s\n", latin_phrase);
  69. printf("Результат транслитерации: %s\n", transliterated_phrase);
  70.  
  71. // Освобождаем память, выделенную под результат
  72. free(transliterated_phrase);
  73.  
  74. return 0;
  75. }
Success #stdin #stdout 0s 5324KB
stdin
Standard input is empty
stdout
Исходная фраза: Hello World
Результат транслитерации: хеллО ВОРлд