⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fconvert.c

📁 hoap2 robot source code
💻 C
字号:
#include <stdio.h>#include <string.h>#include <stdlib.h>#include "convert.h"#define COMMENT ';'#define SEPARATOR " ,\t\n"#define ENDLINE '\n'#define DATACONTINUE 1#define LASTDATA 0#define NOMOREDATA -1#define INPUTFILE "in.dat"#define OUTPUTFILE "out.dat"#define DATANUM 20//#define DATANUM 5 char* ctype[4] = {  "DegToPulse",  "RadToPulse",  "PulseToDeg",  "PulseToRad",};union data{  int idata;  double ddata;//  long double ddata;};void usage();int getdata(FILE* fdi, FILE* fdo, int datatype, union data* x);int convertline(FILE* fdi, FILE* fdo, int cnvtype);int main(int argc, char *argv[]){	FILE* fdi;	FILE* fdo;	char *infilename;	char *outfilename;	int tp;	int ret = 1;	switch(argc) {	case 2:	  infilename = INPUTFILE;	  outfilename = OUTPUTFILE;	  break;	case 3:	  infilename = argv[2];	  outfilename = OUTPUTFILE;	case 4:	  infilename = argv[2];	  outfilename = argv[3];	  break;	default:	  usage();	  return -1;	}	tp = atoi(argv[1]);	if(tp > 4 || tp < 1) {	  usage();	  return -1;	}	///hide radian convert	if(tp == 2 || tp == 4) {		usage();		return -1;	}	printf("program fileconvert.\n");	printf(" convert %s: %s -> %s\n", \	       ctype[tp-1], infilename, outfilename);	if((fdi = fopen(infilename, "r")) == NULL) {		perror("open readfile");		return -1;	}		if((fdo = fopen(outfilename, "w")) == NULL) {		perror("open writefile");		return -1;	}	       	while(ret > 0) {       		ret = convertline(fdi, fdo, tp);		//		printf("one line get\n");       	}	fclose(fdi);	fclose(fdo);	return 0;}int getdata(FILE* fdi, FILE* fdo, int datatype, union data* x){  char c = 0;  int i = 0;  char s[128] = {0};  char* chk = NULL;  while((chk == NULL)||(i == 0)){    c = getc(fdi);    if(c == -1) break;    if(c == COMMENT) {      if(fdo > 0) fprintf(fdo, "%c", c);      do {	c = getc(fdi);	if(fdo > 0) fprintf(fdo, "%c", c);	if(c == -1) return NOMOREDATA;      }while(c != '\n');    } else {      if((chk = strchr(SEPARATOR, c)) == NULL) {//		printf("%c", c);	s[i] = c;	i++;      }    }  }  if(i > 0) {    if(datatype == 0) {      x->idata = atoi(s);      //      printf("int %d", x->idata);    } else {	sscanf(s, "%lf", &(x->ddata));//      x->ddata = atof(s);      //      printf("double %e", x->ddata);    }    if(c == -1) return LASTDATA;  }  if(c == -1) return NOMOREDATA;  return DATACONTINUE;}int convertline(FILE* fdi, FILE* fdo, int cnvtype){  int datanum = 0;  int ret = 1;  union data x;  int datatype; //0:int, 1:double  int ix;  double dx;  while(ret > 0) {    datatype = 0;//    if(datanum != 0 && cnvtype < 2) {    if(cnvtype < 2) {      datatype = 1;    }    ret = getdata(fdi, fdo, datatype, &x);    //    printf("one data get\n");    if(ret == NOMOREDATA) return ret; //no data    if(datanum == 0) { //time      fprintf(fdo, "%d, 2",(int)x.ddata);       printf("%d ms:\n", (int)x.ddata);     }else{  //data      switch(cnvtype) {	case 1:	  ix = DegToPulse(x.ddata, datanum);	  fprintf(fdo, "%d", ix);	  printf(" original :%4.8lf", x.ddata);	  printf(" converted :%d\n", ix);	  break;	  	case 2:	  ix = RadToPulse(x.ddata, datanum);	  fprintf(fdo, "%d", ix);	  printf(" original :%e", x.ddata);	  printf(" converted :%d\n", ix);	  break;	case 3:	  dx = PulseToDeg(x.idata, datanum);	  fprintf(fdo, "%4.8lf", dx);	  printf(" original :%d", x.idata);	  printf(" converted :%4.8lf\n", dx);	  break;	case 4:	  dx = PulseToRad(x.idata, datanum);	  fprintf(fdo, "%e", dx);	  printf(" original :%d", x.idata);	  printf(" converted :%e\n", dx);	  break;	default:	  printf(" converttype error\n");      }    }    datanum++;    if(datanum > DATANUM) {      fprintf(fdo, ", R ,R ,R\n");      return ret;    } else {      fprintf(fdo, ", ");    }  }  return ret;}void usage(){	printf("usage: fconvert CONVERTTYPE INPUTFILE OUTPUTFILE\n");	printf("                COMVERTTYPE 1  Degree to Pulse\n");//	printf("                            2  Radian to Pulse\n");        printf("                            3  Pulse to Degree\n");//	printf("                            4  Pulse to Radian\n");        printf("                INPUTFILE  (default is \"%s\")\n", INPUTFILE);        printf("                OUTPUTFILE (default is \"%s\")\n", OUTPUTFILE);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -