Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- struct area{
- _Bool type;//0== int used
- int val;
- char *str;
- };
- struct line{
- struct area *area;
- };
- int N;
- void create(struct line** line)
- {
- //first
- (*line)->area=malloc(sizeof(struct area)*24);
- //second
- for(int i=0;i<24;i++)
- {
- ((*line)->area)[i].str=malloc(100);
- }
- }
- int cmp(struct line *a,struct line *b ){
- if(!a->area[N].type) {
- return strcmp(a->area[N].str,b->area[N].str);
- }
- if(a->area[N].val<b->area[N].val)return 1;
- if(a->area[N].val<b->area[N].val) return 0;
- return -1;
- }
- int main(void) {
- FILE *input = fopen("input.txt", "r");
- FILE *output = fopen("output.txt", "w");
- struct line * table=malloc(10000* sizeof(struct line));
- fscanf(input,"%d",&N);
- char c =0;
- int len=0;
- int iter=0;
- int fieldn=0;
- create(&table);
- while((fscanf(input, "%c", &c) != EOF))
- {
- if(c==' ')continue;
- if(c=='"')
- {
- table[iter].area[fieldn].type=1;
- int j=0;
- fscanf(input, "%c", &c);
- while(c!='"')
- {
- table[iter].area[fieldn].str[j]=c;
- fscanf(input, "%c", &c);
- j++;
- }
- table[iter].area[fieldn].str[j]='\0';
- }
- if(c>='0'&&c<='9')
- {
- table[iter].area[fieldn].type=0;
- ungetc(c,input);
- fscanf(input,"%d",&table[iter].area[fieldn].val);
- }
- if(c==';')
- {
- fieldn++;
- }
- if(c=='\n')
- {
- len=fieldn;
- fieldn=0;
- iter++;
- }
- }
- qsort(table,iter,sizeof(struct line),cmp);
- for(int i=0;i<iter;i++)
- {
- for(int j=0;j<len;j++)
- {
- if(table[i].area[j].type==1)
- {
- fprintf(output,"%d",table[i].area[j].val);
- }
- else
- {
- char br= '"';
- fprintf(output,"%c",br);
- int k=0;
- while(table[i].area[j].str[k]!='\0')
- {
- fprintf(output,"%c",table[i].area[j].str[k]);
- }
- fprintf(output,"%d",table[i].area[j].val);
- fprintf(output,"%c",br);
- }
- fprintf(output,";");
- }
- fprintf(output,"\n");
- }
- fclose(input);
- fclose(output);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement