(利用規約に従い、削除された質問文は 4/24 21:00 に元に戻しました)
受け取った文字列 strA の各文字をダブらせた文字列 (の先頭のポインタ) を返す関数 char *strDouble(char
*strA) を作成しなさい.なお,文字列の長さの計算には,ライブラリ関数 strlen を使用しても良い.(メ
モリを確保する際,\0 の分を忘れないように注意)以下に例を示す.
入力 出力
xyz → xxyyzz
abcde → aabbccddee
教えてください
Re:教えてください
この掲示板は課題・宿題などの丸投げは禁止です。
これは、学校か何かの課題ですか?
自分で調べるなり気になるところを質問したりするなりしていかないと、
自分にとって何の意味もありません。
どういう風に処理をしているのか述べよ、とかいわれたら答えられるはずがないですし。
(解読スキルによりますが)
これは、学校か何かの課題ですか?
自分で調べるなり気になるところを質問したりするなりしていかないと、
自分にとって何の意味もありません。
どういう風に処理をしているのか述べよ、とかいわれたら答えられるはずがないですし。
(解読スキルによりますが)
Re:教えてください
指摘だけでは何なので、問題の大まかな処理について示しておきます。
・元の文字列(以下 src)を長さを計算し、その長さの2倍+1のサイズの文字列領域を用意する(以下 dest)。
・src を走査し、各文字を dest に2個並べてセットしていく。
・dest の最後に NULL 文字をセットする。
・dest を返す。
・元の文字列(以下 src)を長さを計算し、その長さの2倍+1のサイズの文字列領域を用意する(以下 dest)。
・src を走査し、各文字を dest に2個並べてセットしていく。
・dest の最後に NULL 文字をセットする。
・dest を返す。
Re:教えてください
あえてボケてみる。
#include <stdio.h> #include <string.h> static void strDouble_helper(char *s, size_t pos) { if (s[pos] != '\0') { strDouble_helper(s, pos+1); s[pos*2] = s[pos*2+1] = s[pos]; } else { s[pos*2] = '\0'; } } char *strDouble(char *strA) { strDouble_helper(strA, 0); return strA; } int main(void) { char s[20] = "abc"; printf("%s\n", strDouble(s)); return 0; }