例:class[3][5]={{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15}}
flag[3]={1,0,1}となるとき、
after[10]={1,2,3,4,5,11,12.13,14,15}を作りたいのですが、うまくいきません。
下のコードだと,after={11,12,13,14,15,0,0,0,0,0}となりました。
これをafter={1,2,3,4,5,11,12.13,14,15}になるようにしたいです。
int main(void){
int i;
int class[3][5]={{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15}};
int flag[3]={1,0,1};
int after[2*5]={0};
for(j=0;j<3;j++){
if(flag[j]==1){
memcpy(after,class[j],sizeof(class[j]));
}
}
printf("after:");
for(i=0;i<3*5;i++){
printf("%d ",after);
}printf("\n");
return 0;
}
c言語で、2次元配列の内の選んだ配列を1つの配列にしたい
Re: c言語で、2次元配列の内の選んだ配列を1つの配列にしたい
/******************************************************************************
https://www.onlinegdb.com/
Welcome to GDB Online.
GDB online is an online compiler and debugger tool for C, C++, Python, PHP, Ruby,
C#, VB, Perl, Swift, Prolog, Javascript, Pascal, HTML, CSS, JS
Code, Compile, Run and Debug online from anywhere in world.
*******************************************************************************/
#include <stdio.h>
#include <string.h>
int main(void){
int i,j,k; // 変更
int class[3][5]={{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15}};
int flag[3]={1,0,1};
int after[2*5]={0};
int* p=after; // 追加
for(j=0;j<3;j++){
if(flag[j]==1){
//memcpy(after,class[j],sizeof(class[j])); 同じ場所に、重ね書きしている。
int* q = &class[j][0]; // 追加
for(k=0;k<5;k++) { // 追加
*p ++ = *q++; // 追加
} // 追加
}
}
printf("after:");
for(i=0;i<2*5;i++){ // 変更 after は [2*5]
printf("%d ",after[ i ]);
}
printf("\n");
return 0;
}
// end.
VTuber:
東上☆海美☆(とうじょう・うみみ)
http://atassyu.php.xdomain.jp/vtuber/index.html
レスがついていないものを優先して、レスするみみ。時々、見当外れなレスしみみ。
中の人:
手提鞄あたッしュ、[MrAtassyu] 手提鞄屋魚有店
http://ameblo.jp/mratassyu/
Pixiv: 666303
Windows, Mac, Linux, Haiku, Raspbery Pi, Jetson Nano, 電子ブロック 持ち。
東上☆海美☆(とうじょう・うみみ)
http://atassyu.php.xdomain.jp/vtuber/index.html
レスがついていないものを優先して、レスするみみ。時々、見当外れなレスしみみ。
中の人:
手提鞄あたッしュ、[MrAtassyu] 手提鞄屋魚有店
http://ameblo.jp/mratassyu/
Pixiv: 666303
Windows, Mac, Linux, Haiku, Raspbery Pi, Jetson Nano, 電子ブロック 持ち。