プログラミング(構造体、ファイル入出力、コマンドライン引数)
プログラミング(C言語)の質問です。
コマンドライン引数を使って3点の座標の並びが1レコードに記録されたファイルを読み込み、3点の並びが、時計回りに三角形を形作るか、反時計回りに三角形を形作るか、直線(あるいは一点)上にあるかを判定し、読み込んだ各レコードを判定に従って、3つの出力ファイル(時計回りだけのファイル、反時計回りだけのファイル、直線だけのファイル)に分配して書き込むプログラムを作成しています。しかし、なかなか完成しない上、どこが間違っているのかも分かりません。下に私が作ったプログラムを添付しておくのでどこが間違っているのか指摘してください。よろしくお願いします。
#include <stdio.h>
#define BUFLEN 1024
int main(int argc, char *argv[]){
int difference_x1, difference_y1, difference_x2, difference_y2;
int cross_product;
char buf[BUFLEN];
struct points{
int x;
int y;
} point_a, point_b, point_c;
FILE *fp1, *fp2;
while(fgets(buf, BUFLEN, fp1) != NULL){
fp1 = fopen(argv[1], "r");
fgets(buf, BUFLEN, fp1);
sscanf(buf, "%d,%d,%d,%d,%d,%d", &point_a.x, &point_a.y, &point_b.x, &point_b.y, &point_c.x, &point_c.y);
difference_x1 = point_b.x - point_a.x;
difference_y1 = point_b.y - point_a.y;
difference_x2 = point_c.x - point_a.x;
difference_y2 = point_c.y - point_a.y;
cross_product = difference_x1 * difference_y2 - difference_x2 * difference_y1;
if(cross_product < 0){
fp2 = fopen("clockwise.txt", "w");
}else if(cross_product > 0){
fp2 = fopen("counterclockwise.txt", "w");
}else if(cross_product == 0){
fp2 = fopen("straightline.txt", "w");
}
fprintf(fp2, "%d,%d,%d,%d,%d,%d", point_a.x, point_a.y, point_b.x, point_b.y, point_c.x, point_c.y);
fclose(fp2);
}
fclose(fp1);
return 0;
}
お礼
早々と回答ありがとうございます! 何かコマンド等があると思っていて その発想はなかったです・・・ 無事できました、 ありがとうございます!