fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4.  
  5. // 回文を生成する関数
  6. char *setPalindrome(const char *s) {
  7. // 入力文字列の長さを取得
  8. int len = strlen(s);
  9.  
  10. // 新しい文字列の長さを計算(元の文字列+逆順文字列)
  11. int new_len = 2 * len;
  12.  
  13. // 動的メモリの確保
  14. char *palindrome = (char *)malloc((new_len + 1) * sizeof(char));
  15. if (palindrome == NULL) {
  16. printf("メモリの確保に失敗しました\n");
  17. return NULL;
  18. }
  19.  
  20. // 元の文字列をコピー
  21. strcpy(palindrome, s);
  22.  
  23. // 逆順に文字列を追加
  24. for (int i = 0; i < len; i++) {
  25. palindrome[len + i] = s[len - 1 - i];
  26. }
  27.  
  28. // 末尾にヌル文字を追加
  29. palindrome[new_len] = '\0';
  30.  
  31. return palindrome;
  32. }
  33.  
  34. int main() {
  35. char input[100];
  36.  
  37. // ユーザーから入力を受け取る
  38. printf("文字列を入力してください(アルファベットのみ): ");
  39. scanf("%s", input);
  40.  
  41. // 回文を生成
  42. char *result = setPalindrome(input);
  43.  
  44. // 結果を表示
  45. if (result != NULL) {
  46. printf("生成された回文: %s\n", result);
  47. // メモリの解放
  48. free(result);
  49. }
  50.  
  51. return 0;
  52. }
  53.  
Success #stdin #stdout 0s 5284KB
stdin
abcd
stdout
文字列を入力してください(アルファベットのみ): 生成された回文: abcddcba