Advertisement
Guest User

Untitled

a guest
Jun 22nd, 2017
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. //Setup a simple record structure
  5. typedef char linetype[255];
  6. typedef char string[16];
  7. struct user {
  8.   char firstname[30];
  9.   char lastname[30];
  10.   int age;
  11.  
  12. }array[5]={{"mark", "johnston",50},{"joe","bloggs",30},{"jill","sykes",40},{"bob","builder",35}};
  13. struct record {
  14.     char transType;
  15.     string seriesID;
  16.     string productID;
  17.    // char flag;
  18.     int month;
  19.   //  char ex;
  20.     int version;
  21.     int generation;
  22.     char index1;
  23.     char index2;
  24.     float orderPrice;
  25.     string invStart;
  26.     string invEnd;
  27.     int orderSize;
  28.     int numOrders;
  29.     int aggregate;
  30. };
  31. void readline(linetype line,record &rec)
  32. {   string data[16];
  33.     int i=2,j,finish;
  34.     int start=2;
  35.     int element=1;
  36.     data[0][0]=line[0];data[0][1]='\0';
  37.    while(i<strlen(line))   {
  38.    if(line[i]==','){
  39.        if(line[i-1]==',') { start+=1;finish=i;}
  40.        else {
  41.         finish=i;
  42.          if(finish-start==1) {;data[element][0]=line[i-1];data[element][1]='\0';start=finish+1;element++;}
  43.         else {
  44.           for(j=0;j<finish-start;j++) data[element][j]=line[start+j];
  45.           data[element][j]='\0';
  46.           element++;
  47.           start=finish+1;
  48.           ;
  49.         }
  50.       }
  51.     }
  52.  if(finish==i) i=finish+1; else i++;
  53.  }
  54.  rec.transType=data[0][0];strcpy(rec.seriesID,data[1]);strcpy(rec.productID,data[2]);rec.month=atoi(data[3]);
  55.  rec.version=atoi(data[4]);  rec.generation=atoi(data[5]);
  56.  rec.index1=data[6][0];rec.index2=data[7][0];rec.orderPrice=atof(data[8]);
  57.  strcpy(rec.invStart,data[9]);strcpy(rec.invEnd,data[10]);rec.orderSize=atoi(data[11]);
  58.  rec.numOrders=atoi(data[12]);rec.aggregate=atoi(data[13]);
  59.  
  60. }
  61. int main()
  62. {
  63. //Setup a pointer to the struct
  64. struct user* data;
  65. struct record* wdata;
  66. data = (struct user*) malloc(sizeof(struct user));
  67. wdata = (struct record*) malloc(sizeof(struct record));
  68. *data=array[0];             // put first record in the pointer
  69. FILE* fd; record rec;
  70. FILE* fw;
  71. int i;
  72. linetype line;
  73.  
  74. fd=fopen("testdata.txt","r");
  75. fw=fopen("testwriterand.dat","wb"); // open binary file for writing
  76. if (!fd) printf("no file");
  77.     fscanf(fd,"%s",line);
  78. while (!feof(fd)) {
  79.     fscanf(fd,"%s",line);
  80. //    fscanf(fd,"%s",line);
  81. readline(line,rec);
  82. *wdata=rec;
  83. fwrite((struct record*) wdata,sizeof(struct record),1,fw);
  84.  //  printf("%d\n",rec.month);
  85. }
  86. fclose(fd);fclose(fw);
  87.  
  88. /*
  89. fd=fopen("test.dat","wb");  // open binary file for writing
  90. // Can write a block of memory (4 records) to file
  91. fwrite((struct user*) array,sizeof(struct user),4,fd);
  92. // or just write one record
  93. fwrite((struct user*) data,sizeof(struct user),1,fd);
  94. fclose(fd);
  95. fd=fopen("d:\\datastructures\\testwrite.dat","rb"); //open binary file for reading
  96. fseek(fd, sizeof(record)*5,0); // go to the 4th record
  97. fread((struct record*) wdata,sizeof(struct record),1,fd);
  98. printf("%s\n%f\n%s\n%s\n%d\n",(*wdata).productID,(*wdata).orderPrice,(*wdata).invStart,(*wdata).invEnd,(*wdata).numOrders);
  99. fclose(fd);
  100. */
  101. system ("Pause");
  102. return 0;
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement