#include <stdio.h>
#include <stdlib.h>
int myStrlen(char s[]){ //文字数カウント
int i;
for(i=0;s[i]!='\0';i++);
return i;
}
// 関数の中でtmpに対してmallocして
// そこに回文を代入してreturnで返しましょう
char *setPalindrome(char s[]){
char *tmp;
int count,size;
count = myStrlen(s);
size = count*2-1;
tmp
= (int *)malloc(sizeof(int)*size
); if(tmp==NULL){
return 0;
}
for(int i=0; i<count; i++){
tmp[i] = s[i];
}
for(int i=0; i<count-1; i++){
tmp[size-1-i] = s[i];
}
tmp[size]='\0';
return tmp;
}
//メイン関数はいじる必要はありません
int main(){
int i;
char nyuryoku[1024]; //入力
char *kaibun; //回文を受け取る
kaibun = setPalindrome(nyuryoku); //ポインタ渡し
printf("%s\n -> %s\n",nyuryoku
,kaibun
); return 0;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCmludCBteVN0cmxlbihjaGFyIHNbXSl7IC8v5paH5a2X5pWw44Kr44Km44Oz44OICiAgICBpbnQgaTsKICAgIGZvcihpPTA7c1tpXSE9J1wwJztpKyspOwogICAgcmV0dXJuIGk7Cn0KCi8vIOmWouaVsOOBruS4reOBp3RtcOOBq+WvvuOBl+OBpm1hbGxvY+OBl+OBpgovLyDjgZ3jgZPjgavlm57mlofjgpLku6PlhaXjgZfjgaZyZXR1cm7jgafov5TjgZfjgb7jgZfjgofjgYYKY2hhciAqc2V0UGFsaW5kcm9tZShjaGFyIHNbXSl7CgljaGFyICp0bXA7CglpbnQgY291bnQsc2l6ZTsKCWNvdW50ID0gbXlTdHJsZW4ocyk7CglzaXplID0gY291bnQqMi0xOwoJdG1wID0gKGludCAqKW1hbGxvYyhzaXplb2YoaW50KSpzaXplKTsKCWlmKHRtcD09TlVMTCl7CgkJcHJpbnRmKCJFUlJPUlxuIik7CgkJcmV0dXJuIDA7Cgl9Cglmb3IoaW50IGk9MDsgaTxjb3VudDsgaSsrKXsKCQl0bXBbaV0gPSBzW2ldOwoJfQoJZm9yKGludCBpPTA7IGk8Y291bnQtMTsgaSsrKXsKCQl0bXBbc2l6ZS0xLWldID0gc1tpXTsKCX0KCXRtcFtzaXplXT0nXDAnOwoJcmV0dXJuIHRtcDsKfQoKCi8v44Oh44Kk44Oz6Zai5pWw44Gv44GE44GY44KL5b+F6KaB44Gv44GC44KK44G+44Gb44KTCmludCBtYWluKCl7CiAgICBpbnQgaTsKICAgIGNoYXIgbnl1cnlva3VbMTAyNF07IC8v5YWl5YqbCiAgICBjaGFyICprYWlidW47ICAgLy/lm57mlofjgpLlj5fjgZHlj5bjgosKICAgIHNjYW5mKCIlcyIsbnl1cnlva3UpOwogICAga2FpYnVuID0gc2V0UGFsaW5kcm9tZShueXVyeW9rdSk7IC8v44Od44Kk44Oz44K/5rih44GXCiAgICBwcmludGYoIiVzXG4gIC0+ICVzXG4iLG55dXJ5b2t1LGthaWJ1bik7CiAgICBmcmVlKGthaWJ1bik7CiAgICByZXR1cm4gMDsKfQo=