fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int myStrlen(char s[]){
  5. int i;
  6. for(i=0;s[i]!='\0';i++);
  7. return i;
  8. }
  9. // 回文を作る関数
  10. char *setPalindrome(char s[]){
  11. char *tmp;
  12. int i;
  13. int n;
  14. // 文字列の長さを調べる
  15. n = myStrlen(s);
  16. // 文字列の2倍+終端文字分のメモリを確保
  17. tmp = (char *)malloc(sizeof(char) * (n * 2 + 1));
  18. // 元の文字列をコピーする
  19. for(i=0;i<n;i++){
  20. tmp[i] = s[i];
  21. }
  22. // 元の文字列を逆順に追加する
  23. for(i=0;i<n;i++){
  24. tmp[n+i] = s[n-1-i];
  25. }
  26. // 文字列の終わりを設定
  27. tmp[n*2] = '\0';
  28.  
  29. return tmp;
  30. }
  31.  
  32.  
  33. // メイン関数はいじる必要はありません
  34. int main(){
  35. int i;
  36. char nyuryoku[1024];
  37. char *kaibun;
  38.  
  39. scanf("%s",nyuryoku);
  40.  
  41. kaibun = setPalindrome(nyuryoku);
  42.  
  43. printf("%s\n -> %s\n",nyuryoku,kaibun);
  44.  
  45. free(kaibun);
  46.  
  47. return 0;
  48. }
Success #stdin #stdout 0s 5352KB
stdin
abcd
stdout
abcd
  -> abcddcba