• ベストアンサー

C言語のプログラミング 配列について

C言語の課題でわからないところがあって困ってます。ちなみに初心者です。 int i; //添え字 for(i=0;i<○;i+=16){ //○はデーター数 a[2*i]=b[i]; a[2*i+1]=b[i+1]; a[2*i+2]=b[i+2]; a[2*i+3]=b[i+3]; : a[2*i+15]=b[i+15]; a[2*i+16]=c[i]; a[2*i+17]=c[i+1]; a[2*i+18]=c[i+2]; a[2*i+19]=c[i+3]; : a[2*i+31]=b[i+15]; } という風な配列がありまして、これをすっきりまとめたいのですが どうもエラーか配列aにNULLばかりはいってしまって上手くいきません。 どうすればよいのか教えてください。よろしくお願いします。

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

  • ベストアンサー
  • ykkw_2001
  • ベストアンサー率26% (267/1014)
回答No.2

>ちなみに初心者です。 なので、かなり推定入ってますが・・・・ まず、思い通りに動いてくれないことについて >for(i=0;i<○;i+=16){ //○はデーター数 ここは、 for(i=0;i<○;i++){ こうではないですか? やりたいことがどういうことか、かかれていないので思いっきり推定です。 #ねぇ、#1さん。 あと、「すっきりまとめたい」について、「すっきり」の価値観は結構人によって違いますので、これまたお気に召しますかどうか・・・ 私ならこんな感じです。 for(.........){ memcpy( &a[i*2], &b[i], sizeof(b)*16 ); memcpy( &a[i*2+16], &c[i], sizeof(c)*16 ); };

tommy-mitty
質問者

お礼

ありがとうございます。早速やってみたいと思います。

その他の回答 (4)

  • nagare
  • ベストアンサー率33% (280/831)
回答No.5

>どうもエラー ・aの配列の領域は大丈夫ですか?  iが2であれば、aは64個必要 ・for(i=0;i<○;i+=16)だと、代入する箇所がおかしくなっていきます >NULLばかりはいってしまって ・b,cにデータを入れてます? ・for(i=0;i<○;i+=16)だと、参照する箇所がおかしくなっていきます >これをすっきりまとめたいのですが memcpyを使ったら すっきりしますが。。。(好みですけどね) int datasize=32; int blocksize=16; for (cnt=0; cnt<datasize/blocksize; cnt++) { memcpy (&a[cnt*datasize], &b[cnt*blocksize],blocksize); memcpy (&a[cnt*datasize+blocksize], &c[cnt*blocksize],blocksize); } (No.3 さんと同じ)

tommy-mitty
質問者

お礼

・aの配列の領域は大丈夫ですか? aは#defineで128としてあります ・b,cにデータを入れてます? はいっています。 ちなみに今ポインタ配列でやっています。 いろいろとありがとうございました。早速やってみようと思います。

  • timber
  • ベストアンサー率29% (218/739)
回答No.4

a,b,cがすべてcharの配列ということでしたら、 memset(a, 0, sizeof(a)); for(i=0;i<○;i+=16){  strncat(a, &b[i], 16);  strncat(a, &c[i], 16); } でどうでしょうか。

tommy-mitty
質問者

お礼

ありがとうございます。早速やってみたいと思います。

  • DrSumire
  • ベストアンサー率39% (264/666)
回答No.3

まとめるとこんな感じになるかな? int i,j; for(i=0;i<○;i++) for(j=0;j<16;j++){ a[(i*32)+j] = b[(i*16)+j]; a[(i*32)+j+16] = c[(i*16)+j]; } インクリメントを16づつやるよりも、式の方で調整をしたほうが分かりやすいと思いますよ。

tommy-mitty
質問者

お礼

ありがとうございます。早速やってみたいと思います。

  • ro-su
  • ベストアンサー率24% (19/79)
回答No.1

aとbとcの型はなんでしょうか? あと質問の処理をまとめると ・bとcの配列の値をaにまとめたい ・bとcは16要素ずつまとめてbのデータ→cのデータ  の順に入れたい ってな感じでしょうか。

tommy-mitty
質問者

補足

a,b,cの型はchar型です。 ・bとcの配列の値をaにまとめたい ・bとcは16要素ずつまとめてbのデータ→cのデータの順に入れたい そのとうりです。16要素ずつでなくても4要素,8要素ずつとかもやっってみたいと思っています。bのデータ→Cのデータ→bのデータ→Cのデータという具合です。よろしくお願いします。

関連するQ&A