二次元配列のプログラミングが分かりません
センサからは常に「#(ONかOFFが16)CR」全部で18個の情報が送られてきます。ONは1、OFFは0を返します。
この情報20回分を二次元配列に格納し、排他的論理和を取るプログラムを考えています。
***************************************
例3回の場合
1回目#1101110000000111CR
2回目#0010110101110100CR
3回目#0110010100010101CR
これを縦に排他的論理和を取っていきます。
まず1回目と2回目の排他的論理和をとる
次に2回目と3回目の排他的論理和をとる
最後に全部で1がいくつあったのかを表示
****************************************
このようなプログラムを書きたいです。どのように書いたらいいでしょうか。
<今できているプログラムは以下です>
int main(void)
{
int i=1;
int a=0;
int A[20][18];
int b,c =0;
char* Buffer;
FILE *fp1;
Buffer = (char*)calloc(1024,sizeof(char));
char port1[10];
sprintf(port1,"COM6");
fp1 = fopen("result.txt","w"); // ファイルを開く
/*ポート設定省略*/
/* 配列の初期化*/
for(b=0;b<20;b++){
for(c=0;c<18;c++){
A[b][c]=0;
fprintf(fp0,"%2d",A[b][c]);
}
}
fclose(fp0);
/*********************************
数を合わせる
#が入ったら読み込み残りの17を拾う
*********************************/
do{ CommPort1->ReadBytes((unsigned char*)Buffer,1);
}while(*Buffer !='#');
CommPort1->ReadBytes((unsigned char*)Buffer+1,17); //残りの17byteを読み込む
CommPort1->FlushCommPort();
//データの送受信
for(int i=0;i<20;i++){ //20回分のデータを読みこみ、テキスト出力
tuushin(Buffer);
n++;
fprintf(fp1,"%d=%s \n",n,Buffer);
}
fclose(fp1);
return 0;
}
/****************************************************
通信する関数
「#(ONかOFFが16個)endコード」、計18からなる文字列を読み込み表示
****************************************************/
void tuushin(char*Buffer)
{
CommPort1->ReadBytes((unsigned char*)Buffer,18);
CommPort1->FlushCommPort();
printf("%s\n",Buffer);
}
どのようにかけばいいのか分からないので、教えてください。
お礼
最初の方に引き続きわかりやすい説明ありがとうございました。