• ベストアンサー

C/C++等で1次元配列を2次元配列に代入する方法

凄く簡単な事だと思うのですが分からないので質問させて下さい。 例えば、 char a[10][20] ; char b[20] = "代入したいデータ" ; という配列がある場合、このa[0]の行にbの文字列を入れるにはどうしたら良いのでしょうか。 よろしければ回答をよろしくお願い致します。

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

  • ベストアンサー
  • f272
  • ベストアンサー率46% (8010/17118)
回答No.1

sprintf(a[0],"%s",b); とすればどうかな。

MetalicOne
質問者

お礼

回答、ありがとうございました。 今まで2次元配列に1次元配列の文字列を入れようと思ったことがなく、どうすれば良いか途方にくれていたので助かりました。 一番回答が速かったのでベストアンサーとさせて頂きます。 また機会がありましたらよろしくお願い致します。

その他の回答 (1)

  • chie65535
  • ベストアンサー率43% (8520/19368)
回答No.2

memcpy(&a[0][0], &b[0], sizeof(b)); または memcpy(a[0], b, sizeof(b)); または memcpy(a, b, sizeof(b));

MetalicOne
質問者

お礼

回答、ありがとうございました。 今まで2次元配列に1次元配列の文字列を入れようと思ったことがなく、どうすれば良いか途方にくれていたので助かりました。 丁寧に例も書いて下さってありがとうございます。 今回は回答の先着順という事でベストアンサーは差し上げられないのですが、また機会がありましたらよろしくお願い致します。

関連するQ&A

  • 多次元配列への数値の代入。

    こんにちは。 今、多次元配列への数値の代入の仕方で、悩んでいます。 A[][] = new int[n][n]; B[][] = new int[n][n]; 上記のようなn行n列の配列を宣言し、nを入力します。 例えば、n=100と入力すると、100行100列の配列を定義したことになり、Aの配列には1~10000、Bの配列には10001~20000の数値を代入、200×200であれば1~40000、40001~80000…という感じにしたいのですが、いいアイディアが浮かびません。 また、1~nの間でランダムに数値を選び、その数値を代入というのも考えましたが、Javaで乱数を代入できるのかな?という疑問が出来てしまい、わからなくなってしまいました。 何かいい考えがありましたら、ぜひ教えてください。 よろしくお願いします。

    • ベストアンサー
    • Java
  • char型のポインタ配列に変数の値の代入できる?

    c言語でchar型のポインタ配列に変数の値を代入できるのでしょうか? 例えば int A[10]={1,2,3,4,5,6,7,8,9,10}; char *C[10]; のCに配列Aの中のデータを文字列として入れたいのです。 C[0]="A[0]"としてもA[0]という文字列が代入されてしまうだけなので… よろしくお願いします。

  • 2次元配列の文字"列"の初期化方法

    こまかな話しかもしれないのですが、2次元配列の文字列代入で、 char *array2 = {"Jan", "Feb", "March"}; //NG はNGで char *array2[3] = {"jan,", ...}; //OK なのはどうしてなのでしょうか? 1: "[3]"は明示しなくとも代入される値から分かるという理由で省略してはいけないのでしょうか? また、 2: 一次元の場合 char *array = "aaaaa"; とできるのにどうして2次元ではNGなのか、がピンと来ません。 すみませんが、宜しくお願い致します。

  • 3次元配列から2次元配列への代入

    C言語初心者です。 詳しい方、宜しくお願い致します。 下記のような三次元配列(Sanjigen[2][5][5])があります。 ダンプしたもので見難くてすみません。 00FFBCBC [0][0][0] 01 02 03 04 05 00FFBCC1 [0][1][0] 06 07 08 09 10 00FFBCC6 [0][2][0] 11 12 13 14 15 00FFBCCB [0][3][0] 16 17 18 19 20 00FFBCD0 [0][4][0] 21 22 23 24 25 00FFBCE4 [1][0][0] 26 27 28 29 30 00FFBCE9 [1][1][0] 31 32 33 34 35 00FFBCEE [1][2][0] 36 37 38 39 40 00FFBCF3 [1][3][0] 41 42 43 44 45 00FFBCF8 [1][4][0] 46 47 48 49 50 このデータ(Sanjigen[2][5][5])を、二次元配列にしまう方法をご教授ください。 Nijigen1[5][5]には三次元配列のデータ(1~25)と(26~50)をアンドしたデータを格納します。 Nijigen2[5][5]には三次元配列のデータ(1~25)と(26~50)をオアしたデータを格納します。 下記は自分の作ったプログラムですが、うまくいきません。 char Sanjigen[2][5][5]; char Nijigen1[5][5]; char Nijigen2[5][5]; void get_data( void ) { char i; for( i=0; i<8; ++i ){ Nijigen1[i] = Sanjigen[0][i] & Sanjigen[1][i]; Nijigen2[i] = Sanjigen[0][i] ^ Sanjigen[1][i]; } } 説明わかりにくくて申し訳ありません。 宜しくお願い致します。

  • 可変長の配列要素を文字列に代入する方法

    ちょっとしばらくPHPやってなかったもので、へんなことで悩んでいます。 配列要素が固定長の場合、 <?php $a = array(1, 2, 3); //固定長3の場合 $data = "$a[0], $a[1], $a[2]"; //文字列$dataに配列要素を代入 ?> と簡単にできてしまいますが、 $aが可変長の配列であった場合にも同様の事がやりたいのですが、 この場合、PHPの記述としてはどう書くのがベストなのでしょうか? 御教示ください。

    • ベストアンサー
    • PHP
  • phpの配列を代入

    初めての質問です。 よろしくお願い致します。 phpの配列を代入する方法ですが $data("テスト1#テスト2#テスト3"); $ary= array("5874","9874"); $dataの結果を テスト15874テスト29874テスト3 特定の文字列に「#」に$aryを順番に代入したいのですがわかりません。 str_replaceでなさそうですし、どうすれんばいいのでしょうか?

    • 締切済み
    • PHP
  • C言語のポインタと配列

    どうにも理解しようとしていますが全体像が理解できないので、わかっていることわからないことまとめていくのでバンバン指摘してくださるとうれしいです。 1.配列の宣言には int a[]; a[] = {1,2,3}ですが、コンピュータは{"1","2","3"}の部分の数を数えて[]に代入しているので、 int [][3] = {{1,2,3},{4,5,6}}のような配列を作ったとき[][3]の部分の左側の数字も勝手に代入している。 この時なぜ3が勝手に代入されないかがわからない 2.数字とメモリ int s = {1,2,3}をメモリ的に表現すると、123の順に並んでいる。s[1]=2 int s[][2] = {{1,2,3},{4,5,6}}をメモリ的に表現すると123456に並んでいる。s[1][1]= 5 ここまで文字列以外の配列は添え字だけで管理されている。 3.文字列とポインタ char s[] = "abc"とするとメモリ的にはabc\0であり、[]には4が代入され、s[1]はb自身を指す。 char *s = "abc"をメモリで表すとabc\0であり、\0が来るまでを文字列と認識する。 sは&s[0]とも表現できるように、最初のアドレスを指し示している。 char *s[]= {"abc","def"}をメモリ的に表現するとabc\0def\0であり、[]には2がコンピュータにより判断されて代入される。\0までを文字列として表現しようとする。s [1] は"def"の最初のアドレスを指し示すが、s[1][1]とするとe自身を指すようになる。この時、s[1] = &s[1][0]と表現することは可能であると考えられる。 文字列を直接さす場合でも、ポインタで表現する場合でも、\0が要素の最後に来るのでしょうか? また、{{"abc","def"},{"ghi","jkl"}}を文字列で直接表す場合は char s[2][2] = {{"abc","def"},{"ghi","jkl"}}; となるかと思いますが char *s[2][2] = {{"abc","def"},{"ghi","jkl"}}; とするとs[1][1]でghiの最初のアドレスを、s[1][1][0]でg自身を表せるようになるのでしょうか?

  • 2次元配列をポインタで参照したいのですが・・

    下記Aのような2次元配列を作るとします。 A:1行あたり1024文字(ASCII)格納できるN行の2次元配列 Aの定義をまず下記Bのように行い、その後サイズ分メモリを確保しました。 B:char *str; この変数strを使って、x番目の行のy番目の文字を参照したい場合、どのようにすれば良いのでしょうか? 下記Cではやはりうまくいかないのでしょうか? C:str[x][y] 申し訳ございませんが、ご教授よろしくお願い致します。

  • VBAの一次元配列から二次元配列へ

    A列にa1~a100まで数字が入ってます。 それを、b1~b5,c1~c5,…省略 u1~u5までに、データを 5行ずつ移したいのです。 b1にはa1、b2にはa2の値を、u5にはa100の値を入れたいのです。 マクロの自動記録?を使うとできることはできるのですが…。 一次配列→二次配列で、出来ると聞いたことがあるのですが。 ※VBAは全くの初心者です。 コードに説明もつけてくださるとすごく助かります。 どうかよろしくお願いいたします。

  • char型の二次元配列の意味が分からないのです・・・。

    char型の二次元配列の意味が分からないのです・・・。 char namae[5][10] = { "a1", "a2", "a3", "a4"  }; printf("%s\n",namae[1]); という文があったのですが、これは実行するとa2と表示されました。どうしてなのでしょう。 そもそもcharは文字1文字ですよね。char[5]という一次元配列に5文字の文字列を入れることができるというのは分かります。でもchar[5][10]ってどんな文字列を入れるのでしょうか。 どうして初期化で"a1"という二文字を順々と並べるのか、printfでどうしてnamae[1]なのかが意味不明です。二次元配列だからnamae[1][0]とかで指定するのではないのかと思うのですが。 とにかく混乱です(>_<) ご存知の方、教えていただけませんか?

専門家に質問してみよう