• ベストアンサー

文字列の反転

こんばんわ。C言語初学者の者です。早速質問させてください。 (1) char a; aの中身には、アルファベット小文字の文字列が5個並んでいるとします。 その文字列を前後反転させるにはどうすればいいでしょうか? 例えばabcdeと並んでいる文字列をedcbaとする場合です。(キーボードからabcdeと打ち込んだとき、aにedcbaと格納させたいのです) (2) char a;   char b;  中身は文字列で、二つを合体させたい場合どうすればいいのでしょうか?  例えば aにはth 、bにはatと格納されている場合thatと繋げたいのです。  よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • jjk65536
  • ベストアンサー率59% (66/111)
回答No.3

(1) 皆様がおっしゃっているように、char aには1文字しか入りません。 適宜修正しつつプログラムを書くとこんな感じでしょうか。 char a[128]; // 最大127文字 int i; int length; scanf("%s", a); printf("input str = %s\n", a); length = strlen(a); for(i=0; i<length/2; i++){ // a[i] と a[length-i-1] を交換 char tmp; tmp = a[i]; a[i] = a[length-i-1]; a[length-i-1] = tmp; } printf("output str = %s\n", a); 手元ではこれで input str = abcde output str = edcba と出力されました。 (2)はstrcat()という関数でできます。 char a[128] = "hello"; char b[128] = " world"; strcat(a, b); printf("%s\n", a); これで hello world と出力されます。

noname#55127
質問者

お礼

 丁寧にありがとうございます!!!  

その他の回答 (2)

  • shred
  • ベストアンサー率35% (25/70)
回答No.2

初学者ということで無理もないと思いますが文章がめちゃくちゃです。 (2)にいたっては合体の定義が曖昧です。 単に任意のアドレス空間上で連続であれば良いのかとか。 もう一度よく考えてから質問した方があなたのためです。 考えることは解を得ること以上に重要なことです。 では。

  • koko_u_
  • ベストアンサー率18% (459/2509)
回答No.1

>aの中身には、アルファベット小文字の文字列が5個並んでいるとします。 a は char 型なので、アルファベット 1 文字しか格納できません。