ページ 1 / 1
教えてください
Posted: 2009年4月24日(金) 15:03
by OA
(利用規約に従い、削除された質問文は 4/24 21:00 に元に戻しました)
受け取った文字列 strA の各文字をダブらせた文字列 (の先頭のポインタ) を返す関数 char *strDouble(char
*strA) を作成しなさい.なお,文字列の長さの計算には,ライブラリ関数 strlen を使用しても良い.(メ
モリを確保する際,\0 の分を忘れないように注意)以下に例を示す.
入力 出力
xyz → xxyyzz
abcde → aabbccddee
Re:教えてください
Posted: 2009年4月24日(金) 15:07
by バグ
それで、この問題のどの部分が分からないのでしょうか?
Re:教えてください
Posted: 2009年4月24日(金) 15:18
by OA
率直に答えを教えてください。
Re:教えてください
Posted: 2009年4月24日(金) 15:29
by 御津凪
この掲示板は課題・宿題などの丸投げは禁止です。
これは、学校か何かの課題ですか?
自分で調べるなり気になるところを質問したりするなりしていかないと、
自分にとって何の意味もありません。
どういう風に処理をしているのか述べよ、とかいわれたら答えられるはずがないですし。
(解読スキルによりますが)
Re:教えてください
Posted: 2009年4月24日(金) 15:37
by 御津凪
指摘だけでは何なので、問題の大まかな処理について示しておきます。
・元の文字列(以下 src)を長さを計算し、その長さの2倍+1のサイズの文字列領域を用意する(以下 dest)。
・src を走査し、各文字を dest に2個並べてセットしていく。
・dest の最後に NULL 文字をセットする。
・dest を返す。
Re:教えてください
Posted: 2009年4月24日(金) 15:44
by たかぎ
あえてボケてみる。
#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;
}
Re:教えてください
Posted: 2009年4月24日(金) 16:03
by バグ
解決にするのはともかく、問題を消してしまうのは如何なものでしょうかねぇ…(-_-;)
Re:教えてください
Posted: 2009年4月24日(金) 16:07
by たかぎ
> 問題を消してしまうのは如何なものでしょうかねぇ…(-_-;)
国語力に問題があるか、知能に問題があるか、人格に問題があるかのいずれかだということです。
Re:教えてください
Posted: 2009年4月24日(金) 16:33
by たかぎ
もしかして、私がコードを貼ったので解答が得られたと勘違いしたのだろうか...。
わざわざ
> あえてボケてみる。
と書いたんですけどね。