教えてください

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
OA

教えてください

#1

投稿記事 by OA » 16年前

(利用規約に従い、削除された質問文は 4/24 21:00 に元に戻しました)

受け取った文字列 strA の各文字をダブらせた文字列 (の先頭のポインタ) を返す関数 char *strDouble(char
*strA) を作成しなさい.なお,文字列の長さの計算には,ライブラリ関数 strlen を使用しても良い.(メ
モリを確保する際,\0 の分を忘れないように注意)以下に例を示す.

入力 出力
xyz → xxyyzz
abcde → aabbccddee

バグ

Re:教えてください 

#2

投稿記事 by バグ » 16年前

それで、この問題のどの部分が分からないのでしょうか?

OA

Re:教えてください 

#3

投稿記事 by OA » 16年前

率直に答えを教えてください。

御津凪

Re:教えてください 

#4

投稿記事 by 御津凪 » 16年前

この掲示板は課題・宿題などの丸投げは禁止です。


これは、学校か何かの課題ですか?
自分で調べるなり気になるところを質問したりするなりしていかないと、
自分にとって何の意味もありません。

どういう風に処理をしているのか述べよ、とかいわれたら答えられるはずがないですし。
(解読スキルによりますが)

御津凪

Re:教えてください 

#5

投稿記事 by 御津凪 » 16年前

指摘だけでは何なので、問題の大まかな処理について示しておきます。

・元の文字列(以下 src)を長さを計算し、その長さの2倍+1のサイズの文字列領域を用意する(以下 dest)。
・src を走査し、各文字を dest に2個並べてセットしていく。
・dest の最後に NULL 文字をセットする。
・dest を返す。

たかぎ

Re:教えてください 

#6

投稿記事 by たかぎ » 16年前

あえてボケてみる。
#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:教えてください 

#7

投稿記事 by バグ » 16年前

解決にするのはともかく、問題を消してしまうのは如何なものでしょうかねぇ…(-_-;)

たかぎ

Re:教えてください 

#8

投稿記事 by たかぎ » 16年前

> 問題を消してしまうのは如何なものでしょうかねぇ…(-_-;)

国語力に問題があるか、知能に問題があるか、人格に問題があるかのいずれかだということです。

たかぎ

Re:教えてください 

#9

投稿記事 by たかぎ » 16年前

もしかして、私がコードを貼ったので解答が得られたと勘違いしたのだろうか...。
わざわざ

> あえてボケてみる。

と書いたんですけどね。

閉鎖

“C言語何でも質問掲示板” へ戻る