Example #1
0
int main(int argc, char *argv[])
{
    struct sharknado
    {
        int a;//4
        char b;//1
        float c;
        
    };
    
    struct sharknado s={0x0f000000,'a',ReverseFloat(2.0f)};
    
    
    
    
    int sockfd, portno, n;
    
    struct sockaddr_in serv_addr;
    struct hostent *server;
    
    char buffer[256];
    if (argc < 3) {
        fprintf(stderr,"usage %s hostname port\n", argv[0]);
        exit(0);
    }
    portno = atoi(argv[2]);
    sockfd = socket(AF_INET, SOCK_STREAM, 0);
    if (sockfd < 0)
        _error("ERROR opening socket");
    server = gethostbyname(argv[1]);
    if (server == NULL) {
        fprintf(stderr,"ERROR, no such host\n");
        exit(0);
    }
    bzero((char *) &serv_addr, sizeof(serv_addr));
    serv_addr.sin_family = AF_INET;
    bcopy((char *)server->h_addr,
          (char *)&serv_addr.sin_addr.s_addr,
          server->h_length);
    serv_addr.sin_port = htons(portno);
    if (connect(sockfd,(struct sockaddr *)&serv_addr,sizeof(serv_addr)) < 0)
        _error("ERROR connecting");
    
    //    printf("Please enter the message: ");
    //    bzero(buffer,256);
    //    fgets(buffer,255,stdin);
    
    //The only difference between send() and write() is the presence of flags. With zero flags parameter, send() is equivalent to write()
    n = write(sockfd,(char *)&s, sizeof(s));
    if (n < 0)
        _error("ERROR writing to socket");
    bzero(buffer,256);
    n = read(sockfd,buffer,255);
    if (n < 0)
        _error("ERROR reading from socket");
    printf("%s\n",buffer);
    return 0;
}
int main(int argc, char** argv) {
  FILE *inf;
  FILE *outf;
  long dx_ofs=40; //  index for dx,type float
  long dy_ofs=44;
  long dz_ofs=48;
  long w1_ofs=198; //index for wave 1, type short
  long w2_ofs=200;
  long w3_ofs=202;
  long w4_ofs=204;
  long w5_ofs=206;
  float dx,dy,dz;
  short w1,w2,w3,w4,w5=0;
/*
 * char mode[]="0664";
 */
  if(argc==1) {
      printf("%s: please supply an input filename.\n",argv[0]);
      exit(1);
  }

  if(argc==2) {
      printf("%s: please supply an output filename.\n",argv[0]);
      exit(1);
  }


/*  if (chmod(argv[1],strtol(mode,0,8) < 0)) {
      fprintf(stderr,"%s: error in chmod(%s,%s) - %d (%s)\n",
              argv[0], argv[1], mode, errno, strerror(errno));
      exit(1);
  } */

  if (inf=fopen(argv[1],"r")) {
  fseek(inf,dx_ofs,SEEK_SET);
  fread(&dx,sizeof(float),1,inf);
  fread(&dy,sizeof(float),1,inf);
  fread(&dz,sizeof(float),1,inf);
  fseek(inf,w1_ofs,SEEK_SET);
  fread(&w1,sizeof(short),1,inf);
  fread(&w2,sizeof(short),1,inf);
  fread(&w3,sizeof(short),1,inf);
  fread(&w4,sizeof(short),1,inf);
  fread(&w5,sizeof(short),1,inf);
  fclose(inf);
  }
  else {
      fprintf(stderr,"%s: could not open input file %s.\n",argv[0],argv[1]);
      exit(1);
  }

  if(fabs(dx)>1) {
 //     printf("fabs(dx) is %.5f\n",fabs(dx));
      dx=ReverseFloat(dx);
      dy=ReverseFloat(dy);
      dz=ReverseFloat(dz);
      w1=ReverseShort(w1);
      w2=ReverseShort(w2);
      w3=ReverseShort(w3);
      w4=ReverseShort(w4);
      w5=ReverseShort(w5);
  }

  printf("Data: %f %f %f %i %i %i %i %i \n",dx,dy,dz,w1,w2,w3,w4,w5);
//  printf("Data-rev: %f %f %f %i %i %i %i %i \n",ReverseFloat(dx),ReverseFloat(dy),ReverseFloat(dz),ReverseShort(w1),w2,w3,w4,w5);

  if (outf=fopen(argv[2],"r+")) {
    fseek(outf,dx_ofs,SEEK_SET);
    fwrite(&dx,sizeof(float),1,outf);
    fwrite(&dy,sizeof(float),1,outf);
    fwrite(&dz,sizeof(float),1,outf);
    fseek(outf,w1_ofs,SEEK_SET);
    fwrite(&w1,sizeof(short),1,outf);
    fwrite(&w2,sizeof(short),1,outf);
    fwrite(&w3,sizeof(short),1,outf);
    fwrite(&w4,sizeof(short),1,outf);
    fwrite(&w5,sizeof(short),1,outf);
    fclose(outf);
  }
  else {
      fprintf(stderr,"%s: could not open output file %s.\n",argv[0],argv[2]);
      exit(1);
  }
return(0);
}