#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// 回文を生成する関数
char *setPalindrome(const char *s) {
    // 入力文字列の長さを取得
    int len = strlen(s);
    
    // 新しい文字列の長さを計算（元の文字列＋逆順文字列）
    int new_len = 2 * len;
    
    // 動的メモリの確保
    char *palindrome = (char *)malloc((new_len + 1) * sizeof(char));
    if (palindrome == NULL) {
        printf("メモリの確保に失敗しました\n");
        return NULL;
    }
    
    // 元の文字列をコピー
    strcpy(palindrome, s);
    
    // 逆順に文字列を追加
    for (int i = 0; i < len; i++) {
        palindrome[len + i] = s[len - 1 - i];
    }
    
    // 末尾にヌル文字を追加
    palindrome[new_len] = '\0';
    
    return palindrome;
}

int main() {
    char input[100];
    
    // ユーザーから入力を受け取る
    printf("文字列を入力してください（アルファベットのみ）: ");
    scanf("%s", input);
    
    // 回文を生成
    char *result = setPalindrome(input);
    
    // 結果を表示
    if (result != NULL) {
        printf("生成された回文: %s\n", result);
        // メモリの解放
        free(result);
    }
    
    return 0;
}
